Tietorakenteet ja algoritmit

Kaaviotietorakenteen opetusohjelma

Kaaviotietorakenteen opetusohjelma
Laskennassa kaavio on joukko solmuja, jotka on kytketty linkkeillä. Tärkein ero puun ja kuvaajan välillä on se, että puulla on yksi juurisolmu, kun taas käyrällä on enemmän kuin yksi juurisolmu. Sinulla pitäisi olla jo perustiedot puun tietorakenteesta ennen tänne tulemista, sillä siellä olevia käsitteitä käytetään täällä vain vähän tai ei ollenkaan selityksiä. Jos sinulla ei ole tätä tietoa, lue opas nimeltä Tree Data Structure Tutorial for Beginners linkistä https: // linuxhint.fi / tree_data_structure_tutorial_beginners /.

Kaavion solmua kutsutaan pisteeksi (monikko - kärkipisteet). Sitä kutsutaan joskus edelleen solmuksi; sitä voidaan kutsua myös pisteeksi. Kaavion linkkiä kutsutaan reunaksi. Sitä kutsutaan joskus edelleen linkiksi; sitä voidaan kutsua myös viivaksi.

Kaavio, jossa on monia ominaisuuksia

Tässä kuvassa on kaavio, jossa on monia ominaisuuksia:

Ympyrät (levyt) ovat pisteitä. Mikä tahansa suora viiva tai kaareva viiva tai silmukka on reuna.

Kaavion ominaisuudet

Vertex

Kärkipiste on esine. Se voi olla talo; se voi olla henkilö; se voi olla abstrakti substantiivi; se voi olla mikä tahansa esine, jonka voit ajatella.

Reuna

Reuna on yhteys (suhde) kahden kärjen välillä; yhteys voi olla abstrakti.

Silmukka

Silmukka on reuna, joka yhdistää kärjen itseensä.

Arrow Edge

Tarkastellaan kahta ihmistä: Johannes ja Pietari. Jos John lainaa Pietarille 100 dollaria ja jos Johannes ja Pietari ovat huippuja, niin luotonanto osoittaa kohti Pietaria. Jos molemmat kumppanit unohtavat, että Peter on Johnille velkaa, ja Peter lainaa Johnille 100 dollaria, niin saman reunan toisessa päässä nuolenpää osoittaa kohti Johnia. Jos Pietari lainasi Johnille 75 dollaria eikä 100 dollaria, silloin eri etu yhdistää Peterin Johanneksen kanssa. Tämän toisen reunan nuolenpää osoittaa kohti Johnia. Toisessa tapauksessa on kaksi reunaa, kukin yksi nuolenpää, osoittavat vastakkaisiin suuntiin.

Kärkipiste, johon reuna osoittaa, on pään kärki tälle reunalle. Kärkipiste, josta reuna lähtee, on hännän kärki.

Tapaus

Reuna yhdistää kaksi kärkeä. Reunan sanotaan sattuvan kumpaankin kärkeen. Reunassa ei tarvitse olla nuolenpäätä. Kaksi kärkeä tunnetaan reunan päätepisteinä. On mahdollista saada kaavio, jossa kärkipiste ei kuulu mihinkään reunaan, mutta sitä ei oteta huomioon tässä opetusohjelmassa.

Ohjaamaton kaavio

Reuna voi olla nuoli tai ei. Kaavio, jossa mikään reuna ei ole nuolta, on suuntaamaton kaavio. Reuna voidaan esittää suoralla viivalla tai käyrällä tai silmukalla.

Ohjattu kaavio

Kaavio, jossa kukin reuna on nuoli (suunta), on suunnattu kaavio. Nuolen reunaa voidaan esittää suoralla viivalla nuolenpäällä tai käyrällä nuolenpäällä tai silmukalla nuolenpäällä.

Suunnan puuttuminen suuntaamattoman kuvaajan reunasta tarkoittaa, että suuntaamattoman kaavion jokainen reuna on kaksisuuntainen.

Vertexin aste

Kärkipisteeseen sattuvien reunojen lukumäärä on kärkipiste. Silmukalla on kaksi esiintymää kärjessä, joten silmukka lasketaan kaksi kertaa.

Kaavion järjestys

Kaavion järjestys on kaavion pisteiden määrä.

Monigrafiikka

Monigrafiikka on kaavio, jossa joillekin kärkipareille on enemmän kuin yksi reuna. Ohjaamaton multigrafiikka on sellainen kaavio, jossa reunoilla ei ole suuntaa (eivät ole nuolia). Suunnattu monigrafiikka on sellainen, jossa kukin reuna on nuoli, ja kärkipareille, joilla on enemmän kuin yksi nuoli, yksi kärki on näiden nuolien pyrstö ja toinen kärki on samojen nuolien pää. Seuraava kaavio näyttää suuntaamattoman monikuvan:

Useampi kuin yksi reuna (i.e. useita reunoja) kärkiparille kutsutaan myös yhdensuuntaisiksi reunoiksi.

Värisevä

Värinä on monikuvaaja, joka sallii silmukan (yhden tai useamman silmukan). Jotkut monikuvia eivät salli silmukoita.

Yksinkertainen kaavio

Yksinkertainen kaavio on kaavio, jossa kahdella kärkiparilla ei ole useita reunoja. Silmukoita ei sallita yksinkertaisessa kaaviossa.

Tyhjä kaavio

Tyhjä kaavio on kaavio, jossa ei ole pisteitä eikä reunoja.

Sekakaavio

Sekakuvaaja on kaavio, jossa jotkut reunat ovat nuolia ja toiset eivät; toisin sanoen: joillakin reunoilla on suunta, toisia ei ole suunnattu.

Painotettu kaavio

On mahdollista saada kaavio, jossa jokaiselle reunalle on annettu numero, joka tunnetaan nimellä paino. Joillakin reunoilla on sama numero, mutta numerot ovat yleensä erilaisia. Tällaista kuvaajaa kutsutaan painotetuksi kaaviona. Tietyn kaavion numerot saattavat edustaa pituuksia tai kustannuksia (hintoja) tai jonkinlaista suuruutta ongelmasta riippuen.

Indegree ja Outdegree

Sanasto, indegree ja outegegree koskevat vain suunnattua kuvaajaa. Kaavio voi olla monigrafiikka tai ei. Kaaviossa voi olla silmukoita tai ei.

Kärkipisteeseen kytkettyjen nuolenpäiden määrä on kyseisen kärkipisteen asteikko. Nuolella, jossa on yksi nuolenpää, on pää ja hännän pää. Kärkipisteeseen kytkettyjen hännän lukumäärä on kyseisen kärjen pituuden ulompi.

Huomautus: Tässä opetusohjelmassa ei käsitellä kaaviota, jossa on useita reunoja kärkiparille, jossa useat reunat ovat vastakkaisiin suuntiin.

Graafisen ohjelmiston esitys

Kaavio voidaan esittää ohjelmistossa samalla tavalla kuin se piirretään kaavioon. Kaavio voidaan myös esittää ohjelmistossa matemaattisella matriisilla (kaksiulotteinen taulukko). Yhtä tällaisista matriiseista kutsutaan vierekkäisyysmatriiseiksi.

Adjacency Matrix

Vierekkäisyysmatriisi on neliömäinen matriisi. Rivien otsikot ovat kaikki pisteet, jotka on kirjoitettu nousevassa järjestyksessä. Sarakkeiden otsikot ovat edelleen samat pisteet, kirjoitettuna nousevassa järjestyksessä. Matriisin rivien tai sarakkeiden laskenta alkaa luvusta 1 eikä nollasta kuten matriisien kohdalla. Kun tunnistetaan matriisin elementti, rivin numero kirjoitetaan ensin ennen sarakkeen numeroa.

Suunnittelemattomalle kuvaajalle jokainen vierekkäisen matriisin merkintä (elementti) on kahden vastaavan kärjen yhdistävien reunojen lukumäärä. Silmukka tulisi laskea kahdesti. Suunnatun kaavion kohdalla jokainen vierekkäisen matriisin merkintä on joko rivin kärjestä lähtevien ja vastaavan sarakkeen kärkeen saapuvien reunojen lukumäärä tai sarakkeen kärjestä poistuvien ja vastaavaa rivipistettä olevien reunojen lukumäärä. Valinta on ohjelmoijan. Tässä tilanteessa (kummassakin tapauksessa) silmukka tulisi silti laskea kerran.

Huomaa: Kaavio on kaavio on itsessään tietorakenne. Rinnakkaismatriisi on myös itsessään tietorakenne.

Ohjaamaton kaavio ja adjacency-matriisi

Seuraavissa kaavioissa on suuntaamaton kaavio ja vastaava vierekkäisyysmatriisi:

Matriisin johtava diagonaali on diagonaali vasemmalta ylhäältä oikealle. Suuntaamaton matriisi on symmetrinen johtava diagonaali. Rivin A ja sarakkeen C matriisimerkintä on 1, mikä tarkoittaa, että on yksi reuna, joka yhdistää pisteet A ja kärkipisteen C. Rivin C ja sarakkeen B matriisimerkintä on 3, mikä tarkoittaa, että kärkeä C ja kärkeä B yhdistää kolme reunaa. Muut merkinnät selitetään samalla tavalla.

Rivin merkintöjen summa antaa vastaavan kärjen reunojen määrän (aste). Rivin A merkintöjen summa on 2, mikä tarkoittaa, että 2 reunaa on kytketty kärkeen A. Rivin B merkintöjen summa on 6, mikä tarkoittaa, että 6 reunaa on kytketty kärkeen B. Loput merkinnät selitetään samalla tavalla.

Suunnattu kaavio ja adjacency-matriisi

Seuraavissa kaavioissa on suunnattu kaavio ja vastaava vierekkäisyysmatriisi:

Suunnatun kaavion vierekkäisyysmatriisi ei välttämättä ole symmetrinen johtava diagonaali. Rivin A ja sarakkeen C matriisimerkintä on 1, mikä tarkoittaa, että yksi reuna lähtee pisteestä A pisteeseen C. Rivin C ja sarakkeen B matriisimerkintä on 3, mikä tarkoittaa, että 3 reunaa lähtee kärjestä C kärkeen B. Muut merkinnät selitetään samalla tavalla.

Sarakkeen merkintöjen summa antaa (sarake) -korkeuden indegree-arvon. Rivin merkintöjen summa antaa (rivin) kärjen ulomman asteen. Sarakkeen A merkintöjen summa on 1, eli yksi reuna on suunnattu kärkeen A. Rivin B merkintöjen summa on 2, mikä tarkoittaa, että 2 reunaa lähtee kärjestä B. Loput merkinnät selitetään samalla tavalla.

Kuvaajaoperaatiot

Tietorakenne, kuten kaavio, koostuu joukosta data-arvoja tai joukko objekteja, plus objektien välinen suhde sekä objektien väliset toiminnot (toiminnot). Kaavion suhteet on merkitty reunoilla. Kaaviossa tulisi olla ainakin seuraavat toiminnot:

vieressä (G, x, y)

G tarkoittaa kuvaajaa. Tämä toimenpide tarkistaa, yhdistääkö reuna kärjen x ja kärjen y. Matriisin merkinnän arvo ja sijainti osoittavat reunan (ja sen tyypin) yhteyden.

naapurit (G, x)

Tämä toiminto palauttaa luettelon kaikista kärjistä, jotka on kytketty suoraan kärkeen x. Matriisin merkinnän arvo ja sijainti osoittavat reunan yhteyden.

remove_vertex (G, x)

Tämä toiminto poistaa kärkipisteen, x, kaaviosta. Jos kärjessä ei ole reunaa, ei ole mitään ongelmaa. Jos kärjessä oli kuitenkin linkkejä, myös linkit (reunat) tulisi poistaa. Matriisin merkinnän arvo ja sijainti osoittavat tietyn kärjen läsnäoloa. Jos kärki poistetaan, matriisi on säädettävä uudelleen.

add_vertex (G, x)

Tämä lisää kärkipisteen, x ilman reunoja, tai korvaa kärkipisteen, jolla on reunat, mutta joka on poistettu. Matriisin merkinnän arvo ja sijainti osoittavat tietyn kärjen esiintymistä. Jos kärkipiste lisätään, matriisi on säädettävä uudelleen.

add_edge (G, x, y)

Tämä toiminto lisää uuden reunan kärjen x ja kärjen y väliin, jos reunaa ei ole siellä. Matriisin merkinnän arvo ja sijainti osoittavat tietyn reunan läsnäoloa. Jos reuna lisätään, matriisi on säädettävä uudelleen.

poista_reuna (G, x, y)

Tämä toimenpide poistaisi kärjen x ja kärjen y välisen reunan, jos reuna olisi siellä. Matriisin merkinnän arvo ja sijainti osoittavat tietyn reunan läsnäoloa. Jos reuna poistetaan, matriisi on säädettävä uudelleen.

get_vertex_value (G, x)

Tämä operaatio palauttaa kärkeen liittyvän arvon v, x. Tämän saavuttamiseksi tarvitset tehosarjan kärkipisteiden ja niiden arvojen osajoukot.

set_vertex_value (G, x, v)

Tämä toiminto antaa uuden arvon, v huippuun liittyvälle arvolle, x. Tämän saavuttamiseksi tarvitset tehosarjan kärkipisteiden ja niiden arvojen osajoukot.

Jotkut kaaviot liittävät arvot myös niiden reunoihin. Tällaiset kaaviot tarvitsevat seuraavat lisätoiminnot:

get_edge_value (G, x, y)

Tämä toiminto palauttaa reunaan liittyvän arvon, v (x, y). Tämän saavuttamiseksi tarvitset tehojoukon alajoukkoja reunoille ja niiden arvoille.

set_edge_value (G, x, y, v)

Tämä toiminto antaa uuden arvon, v reunaan liittyvälle arvolle, (x, y). Tämän saavuttamiseksi tarvitset tehojoukon alajoukkoja reunoille ja niiden arvoille.

Johtopäätös

Kaavio on joukko pisteitä, jotka on yhdistetty reunoihin. Kaavio voidaan ohjata tai ohjata. Reunat voivat olla suuntaamattomia tai suuntaavia. Silmukat voivat olla läsnä tai puuttua kaaviosta. Seuraavaksi sinun tulisi oppia kaavioihin liittyvä joukko, teho ja multiset. Sen jälkeen sinun tulisi oppia erityyppiset kaaviot, kuten suunnattu kaavio, säännöllinen kaavio, täydellinen kaavio, kahdenvälinen kaavio, turnauskaavio, vuokaavio jne.

Chrys

Kirjailijasta

Chrysanthus Forcha

Matematiikan integraation löytö ensimmäisistä periaatteista ja niihin liittyvistä sarjoista. Teknisen koulutuksen maisterin tutkinto, erikoistunut elektroniikkaan ja tietokoneohjelmistoihin. BSc Elektroniikka. Minulla on myös tietotekniikan ja tietoliikenteen maisteritason osaamista ja kokemusta. 20000 kirjailijasta olin devarticlesin 37. paras kirjailija.com. Olen työskennellyt näillä aloilla yli 10 vuotta.

Näytä kaikki viestit
Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...