Tietorakenteet ja algoritmit

Hash-taulukon tietorakenteen opetusohjelma

Hash-taulukon tietorakenteen opetusohjelma
Tietojenkäsittelytieteessä sana "kartta" tarkoittaa linkittää yhden sarjan kohde toiseen sarjaan. Kuvittele, että sivulla on sanoja ympyrässä vasemmalla ja saman sivun oikealla puolella on toinen ympyrä, jossa on muita sanoja. Oletetaan, että kussakin ympyrässä sanat kirjoitetaan sattumanvaraisesti, hajallaan ympyrän sisällä. Oletetaan myös, että vasemman ympyrän sanoja kutsutaan avaimiksi ja oikean ympyrän sanoja arvoksi. Jos jokaisesta vasemmalla olevasta sanasta piirretään nuoli oikealla olevaan sanaan, sanotaan, että avaimet on yhdistetty arvoihin.

Oletetaan, että olet ison proviisikaupan omistaja asuinmaassasi. Oletetaan, että asut suurella alueella, joka ei ole kaupallinen alue. Et ole ainoa, jolla on tarvikkeita alueella; sinulla on muutama kilpailija. Ja sitten tulee sinulle mieleen, että sinun tulisi tallentaa asiakkaiden puhelinnumerot harjoituskirjaan. Tietenkin harjoituskirja on pieni, etkä voi tallentaa kaikkia asiakkaidesi puhelinnumeroita.

Joten päätät tallentaa vain kanta-asiakkaidesi puhelinnumerot. Ja niin sinulla on taulukko, jossa on kaksi saraketta. Vasemmassa sarakkeessa on asiakkaiden nimet ja oikealla olevassa sarakkeessa vastaavat puhelinnumerot. Tällä tavalla asiakkaan nimen ja puhelinnumeron välillä on kartoitus. Taulukon oikeaa saraketta voidaan pitää ydinsekoitustaulukkona. Asiakasnimiä kutsutaan nyt avaimiksi ja puhelinnumeroita kutsutaan arvoiksi. Huomaa, että kun asiakas menee siirtoon, joudut peruuttamaan hänen rivinsä, jolloin rivi on tyhjä tai korvataan uuden kanta-asiakkaan rivillä. Huomaa myös, että ajan myötä kanta-asiakasmäärä voi kasvaa tai laskea, joten pöytä voi kasvaa tai kutistua.

Oletetaan toisena kartoituksen esimerkkinä, että läänissä on maanviljelijöiden klubi. Kaikki viljelijät eivät tietenkään ole klubin jäseniä. Jotkut klubin jäsenet eivät ole säännöllisiä jäseniä (läsnä ja mukana). Baarimies voi päättää tallentaa jäsenten nimet ja heidän valitsemansa juoman. Hän kehittää taulukon kahdesta sarakkeesta. Vasempaan sarakkeeseen hän kirjoittaa klubin jäsenten nimet. Oikeassa sarakkeessa hän kirjoittaa vastaavan juomavalinnan.

Tässä on ongelma: oikeassa sarakkeessa on kaksoiskappaleita. Eli sama juoma löytyy useammin kuin kerran. Toisin sanoen eri jäsenet juovat samaa makeaa juomaa tai samaa alkoholijuomaa, kun taas muut jäsenet juovat eri makeaa tai alkoholijuomaa. Baarimies päättää ratkaista tämän ongelman lisäämällä kapean sarakkeen kahden sarakkeen väliin. Tässä keskimmäisessä sarakkeessa, ylhäältä alkaen, hän numeroi rivit alkaen nollasta (i.e. 0, 1, 2, 3, 4 jne.), alaspäin, yksi hakemisto per rivi. Tällä tavoin hänen ongelmansa on ratkaistu, koska jäsenen nimi kartoitetaan nyt hakemistoon eikä juoman nimeen. Joten kun juoma tunnistetaan hakemistolla, asiakkaan nimi kartoitetaan vastaavaan hakemistoon.

Pelkästään arvosarake (juomat) muodostaa hash-perustaulukon. Muokatussa taulukossa indeksien sarake ja niihin liittyvät arvot (kaksoiskappaleilla tai ilman) muodostavat normaalin hash-taulukon - hash-taulukon täydellinen määritelmä on annettu alla. Avaimet (ensimmäinen sarake) eivät välttämättä ole osa hash-taulukkoa.

Toisena esimerkkinä voidaan harkita verkkopalvelinta, johon asiakastietokoneen käyttäjä voi lisätä tietoja, poistaa tietoja tai muokata tietoja. Palvelimelle on monia käyttäjiä.  Jokainen käyttäjänimi vastaa palvelimelle tallennettua salasanaa. Palvelinta ylläpitävät voivat nähdä käyttäjänimet ja vastaavat salasanat ja pystyä siten vioittamaan käyttäjien työtä.

Joten palvelimen omistaja päättää tuottaa toiminnon, joka salaa salasanan ennen sen tallentamista. Käyttäjä kirjautuu palvelimeen normaalilla ymmärretyllä salasanallaan. Jokainen salasana on kuitenkin nyt tallennettu salatussa muodossa. Jos joku näkee salatun salasanan ja yrittää kirjautua sisään sitä käyttäen, se ei toimi, koska sisäänkirjautuminen saa palvelimen ymmärtämän salasanan eikä salattua salasanaa.

Tässä tapauksessa ymmärretty salasana on avain ja salattu salasana on arvo. Jos salattu salasana on salattujen salasanojen sarakkeessa, kyseinen sarake on perushajataulukko. Jos kyseistä saraketta edeltää toinen sarake, jonka indeksit alkavat nollasta siten, että jokainen salattu salasana liitetään hakemistoon, niin indeksi- ja salatun salasanan sarake muodostavat normaalin hash-taulukon. Avaimet eivät välttämättä ole osa hash-taulukkoa.

Huomaa, että tässä tapauksessa jokainen avain, joka on ymmärretty salasana, vastaa käyttäjänimeä. Joten on olemassa käyttäjänimi, joka vastaa hakemistoon yhdistettyä avainta, joka liittyy arvoon, joka on salattu avain.

Hajautusfunktion määritelmä, hash-taulukon täydellinen määritelmä, taulukon merkitys ja muut yksityiskohdat annetaan alla. Sinulla on oltava tietoa viitteissä (viitteissä) ja linkitetyissä luetteloissa, jotta voisit ymmärtää tämän opetusohjelman loppuosaa.

Merkitys Hash-toiminto ja Hash-taulukko

Taulukko

Taulukko on joukko peräkkäisiä muistipaikkoja. Kaikki sijainnit ovat samankokoisia. Ensimmäisen sijainnin arvoon pääsee hakemistolla 0; toisen sijainnin arvoon päästään indeksillä 1; kolmanteen arvoon päästään indeksillä 2; neljäs indeksillä, 3; ja niin edelleen. Matriisi ei normaalisti voi kasvaa tai kutistua. Taulukon koon (pituuden) muuttamiseksi on luotava uusi taulukko ja kopioitava vastaavat arvot uuteen matriisiin. Taulukon arvot ovat aina samaa tyyppiä.

Hash-toiminto

Ohjelmistossa hash-toiminto on toiminto, joka ottaa avaimen ja tuottaa vastaavan indeksin taulukon solulle. Matriisi on kiinteän kokoinen (kiinteä pituus). Avainten määrä on mielivaltaista kokoa, yleensä suurempi kuin taulukon koko. Hajautusfunktiosta johtuvaa indeksiä kutsutaan hash-arvoksi tai tiivistelmäksi tai hash-koodiksi tai yksinkertaisesti hashiksi.

Hash-taulukko

Hajautustaulukko on arvoja sisältävä taulukko, jonka indeksit, avaimet on yhdistetty. Avaimet kartoitetaan epäsuorasti arvoihin. Itse asiassa avainten sanotaan olevan yhdistetty arvoihin, koska jokainen indeksi liittyy arvoon (kopioilla tai ilman kopioita). Kuitenkin toiminto, joka tekee kartoituksen (i.e. hajautus) liittyy avaimet taulukkoindekseihin eikä oikeastaan ​​arvoihin, koska arvoissa saattaa olla kaksoiskappaleita. Seuraava kaavio kuvaa hajautustaulukon ihmisten nimille ja heidän puhelinnumerilleen. Matriisisoluja (paikkoja) kutsutaan ryhmiksi.

Huomaa, että jotkut kauhat ovat tyhjät. Hajautustaulukossa ei välttämättä ole arvoja kaikissa ryhmissä. Ryhmien arvojen ei tarvitse välttämättä olla nousevassa järjestyksessä. Indeksit, joihin ne liittyvät, ovat kuitenkin nousevassa järjestyksessä. Nuolet osoittavat kartoituksen. Huomaa, että avaimet eivät ole taulukossa. Niiden ei tarvitse olla missään rakenteessa. Hajautusfunktio vie minkä tahansa avaimen ja hajauttaa taulukon hakemiston. Jos hakemiston tiivistykseen liittyvässä ryhmässä ei ole arvoa, siihen voidaan lisätä uusi arvo. Looginen suhde on avaimen ja hakemiston välillä, ei avaimen ja hakemistoon liittyvän arvon välillä.

Matriisin arvot, kuten tämän hash-taulukon arvot, ovat aina samaa tietotyyppiä. Hajautustaulukko (ryhmät) voi yhdistää avaimet erilaisten tietotyyppien arvoihin. Tässä tapauksessa taulukon arvot ovat kaikki osoittimia, jotka osoittavat eri arvotyyppejä.

Hajautustaulukko on taulukko, jossa on hajautusfunktio. Funktio ottaa avaimen ja hajauttaa vastaavan hakemiston ja yhdistää avaimet taulukkoon arvoihin. Avainten ei tarvitse olla osa hash-taulukkoa.

Miksi taulukko ei ole linkitetty luettelo Hash-taulukolle

Hajautustaulukon taulukko voidaan korvata linkitetyllä luettelotietorakenteella, mutta siinä olisi ongelma. Linkitetyn luettelon ensimmäinen elementti on luonnollisesti indeksillä 0; toinen elementti on luonnollisesti indeksillä 1; kolmas on luonnollisesti indeksillä 2; ja niin edelleen. Linkitetyn luettelon ongelma on, että arvon noutamiseksi luettelo on toistettava, ja tämä vie aikaa. Taulukon arvoon pääsy tapahtuu satunnaiskäytöllä. Kun indeksi on tiedossa, arvo saadaan ilman iteraatiota; tämä pääsy on nopeampi.

Törmäys

Hajautusfunktio vie avaimen ja hajauttaa vastaavan indeksin, jotta voidaan lukea liittyvä arvo tai lisätä uusi arvo. Jos tarkoituksena on lukea arvo, ei ole toistaiseksi ongelmaa (ei ongelmaa). Jos tarkoituksena on lisätä arvo, hajautusindeksillä voi jo olla siihen liittyvä arvo, ja se on törmäys; uutta arvoa ei voida laittaa sinne, missä arvo on jo olemassa. On olemassa tapoja ratkaista törmäys - katso alla.

Miksi törmäys tapahtuu

Yllä olevassa toimituskaupan esimerkissä asiakasnimet ovat avaimet ja juomien nimet ovat arvoja. Huomaa, että asiakkaita on liikaa, kun taas matriisilla on rajoitettu koko, eikä se voi viedä kaikkia asiakkaita. Joten vain pysyvien asiakkaiden juomat tallennetaan ryhmään. Törmäys tapahtuisi, kun muusta kuin vakituisesta asiakkaasta tulee säännöllinen. Kaupan asiakkaat muodostavat suuren joukon, kun taas ryhmässä olevien asiakkaiden ämpärien määrä on rajallinen.

Hajautustaulukoissa tallennetaan erittäin todennäköisesti avainten arvot. Kun avain, joka ei ollut todennäköistä, tulee todennäköiseksi, tapahtuu todennäköisesti törmäys. Itse asiassa törmäys tapahtuu aina hash-taulukoiden kanssa.

Törmäyksen ratkaisun perusteet

Kaksi lähestymistapaa törmäyksen ratkaisemiseen kutsutaan erilliseksi ketjutukseksi ja avoimeksi osoitteeksi. Teoriassa avainten ei pitäisi olla tietorakenteessa tai niiden tulisi olla osa hash-taulukkoa. Molemmat lähestymistavat edellyttävät kuitenkin, että avainsarake edeltää hajautustaulukkoa ja siitä tulee osa kokonaisrakennetta. Sen sijaan, että avaimet ovat avaimet-sarakkeessa, osoittimet avaimiin voivat olla avaimet -sarakkeessa.

Käytännön hash-taulukko sisältää avaimet-sarakkeen, mutta tämä avaimen sarake ei ole virallisesti osa hash-taulukkoa.

Kummassakin resoluution lähestymistavassa voi olla tyhjiä ämpärejä, ei välttämättä taulukon lopussa.

Erillinen ketju

Erillisessä ketjutuksessa, kun törmäys tapahtuu, uusi arvo lisätään törmätyn arvon oikealle puolelle (ei ylä- tai alapuolelle). Joten kahdella tai kolmella arvolla on sama indeksi. Harvoin useammalla kuin kolmella pitäisi olla sama indeksi.

Voiko useammalla kuin yhdellä arvolla olla sama indeksi taulukossa? - Ei. Joten monissa tapauksissa indeksin ensimmäinen arvo on linkitetyn luettelotietorakenteen osoitin, joka pitää yhden, kahden tai kolmen törmätyn arvon. Seuraava kaavio on esimerkki hash-taulukosta asiakkaiden ja heidän puhelinnumeroiden erilliseen ketjutukseen:

Tyhjät kauhat on merkitty kirjaimella x. Lopuilla paikoilla on viitteitä linkitettyihin luetteloihin. Jokaisella linkitetyn luettelon elementillä on kaksi tietokenttää: yksi asiakkaan nimelle ja toinen puhelinnumerolle. Ristiriita koskettaa avaimia: Peter Jones ja Suzan Lee. Vastaavat arvot koostuvat yhdestä linkitetystä luettelosta.

Ristiriitaisilla avaimilla arvon lisäämisen kriteeri on sama kriteeri, jota käytetään arvon paikantamiseen (ja lukemiseen).

Avaa osoite

Kun osoite on avoin, kaikki arvot tallennetaan ryhmään. Kun ristiriita esiintyy, uusi arvo lisätään tyhjään ryhmään, joka vastaa vastaavaa arvoa ristiriidalle jonkin kriteerin mukaisesti. Ehto, jota käytetään arvon lisäämiseen ristiriidassa, on sama kriteeri, jota käytetään arvon paikantamiseen (etsimiseen ja lukemiseen).

Seuraava kaavio kuvaa konfliktien ratkaisemista avoimella osoituksella:

Hajautusfunktio vie avaimen, Peter Jones ja hajauttaa indeksin, 152, ja tallentaa puhelinnumeronsa siihen liittyvään ryhmään. Jonkin ajan kuluttua hash-funktio hajauttaa saman indeksin, 152 avaimesta, Suzan Lee, törmäämällä Peter Jonesin indeksiin. Tämän ratkaisemiseksi Suzan Leen arvo tallennetaan seuraavan indeksin 153 ämpäriin, joka oli tyhjä. Hajautusfunktio hajauttaa indeksin, 153 avaimelle, Robin Hoodille, mutta tätä hakemistoa on jo käytetty ratkaisemaan edellisen avaimen ristiriita. Joten Robin Hoodin arvo sijoitetaan seuraavaan tyhjään ämpäriin, joka on indeksin 154 arvo.

Menetelmät ristiriitojen ratkaisemiseksi erillistä ketjutusta ja avointa osoitetta varten

Erillisellä ketjuttamisella on tapansa ratkaista konfliktit, ja avoimella käsittelyllä on myös omat menetelmänsä konfliktien ratkaisemiseen.

Menetelmät erillisten ketjutusristiriitojen ratkaisemiseksi

Menetelmät erillisten ketjujen hash-taulukoiden selvittämiseksi on nyt lyhyt:

Erillinen ketjutus linkitetyillä listoilla

Tämä menetelmä on kuten edellä on selitetty. Linkitetyn luettelon jokaisella elementillä ei kuitenkaan välttämättä ole avainkenttää (esim.g. asiakasnimi-kenttä yllä).

Erillinen ketjutus listapään soluilla

Tässä menetelmässä linkitetyn luettelon ensimmäinen elementti tallennetaan ryhmän ämpäriin. Tämä on mahdollista, jos taulukon tietotyyppi on linkitetyn luettelon elementti.

Eristä ketjutus muista rakenteista

Linkitettyjen luetteloiden sijasta voidaan käyttää mitä tahansa muuta tietorakennetta, kuten tarvittavia toimintoja tukevaa itsetasapainotettua binäärihakupuuta - katso myöhemmin.

Menetelmät avoimien osoiteristiriitojen ratkaisemiseksi

Menetelmää konfliktien ratkaisemiseksi avoimessa osoituksessa kutsutaan koetussekvenssiksi. Kolme tunnettua koetinsekvenssiä selitetään lyhyesti:

Lineaarinen koetus

Lineaarisella koetuksella etsitään konfliktin yhteydessä lähin tyhjä ämpäri ristikon ämpärin alapuolella. Lineaarisella koetuksella sekä avain että sen arvo tallennetaan samaan ämpäriin.

Toissijainen koetus

Oletetaan, että ristiriita esiintyy indeksissä H. Seuraava tyhjä paikka (ämpäri) indeksissä H + 12 käytetään; jos se on jo varattu, seuraava tyhjä H + 2: ssa2 käytetään, jos se on jo varattu, seuraava tyhjä H + 3: ssa2 käytetään, ja niin edelleen. Tähän on muunnelmia.

Tuplasekoitus

Kaksoissekoituksella on kaksi hash-toimintoa. Ensimmäinen laskee (hajauttaa) indeksin. Jos tapahtuu ristiriita, toinen käyttää samaa avainta määrittääkseen, kuinka alaspäin arvo tulisi lisätä. Tässä on enemmän - katso myöhemmin.

Täydellinen Hash-toiminto

Täydellinen hash-toiminto on hash-toiminto, joka ei voi johtaa törmäykseen. Tämä voi tapahtua, kun avainjoukko on suhteellisen pieni ja jokainen avain kartoittaa tietyn hash-taulukon kokonaisluvun.

ASCII-merkistöissä isot kirjaimet voidaan yhdistää vastaaviin pieniin kirjaimiin hajautusfunktion avulla. Kirjaimet on esitetty tietokoneen muistissa numeroina. ASCII-merkistöissä A on 65, B on 66, C on 67 jne. ja a on 97, b on 98, c on 99 jne. Voit kartoittaa A: sta a: han lisäämällä 32 arvoon 65; kartoittamaan B: stä b: hen, lisää 32-66; kartoittamiseksi C: stä c: hen lisätään 32: sta 67: een; ja niin edelleen. Tässä isot kirjaimet ovat näppäimiä ja pienet kirjaimet ovat arvoja. Tämän hash-taulukko voi olla taulukko, jonka arvot ovat niihin liittyviä indeksejä. Muista, että ryhmät voivat olla tyhjiä. Joten ryhmät 64: stä 0: een voivat olla tyhjiä. Hajautusfunktio lisää yksinkertaisesti 32 isoihin koodinumeroihin hakemiston ja siten pienen kirjaimen saamiseksi. Tällainen toiminto on täydellinen hash-toiminto.

Hajautus kokonaislukuista kokonaislukuindekseihin

On olemassa erilaisia ​​menetelmiä kokonaisluvun hajauttamiseksi. Yksi niistä on nimeltään Modulo Division Method (Function).

Modulo-divisioonan hajautusfunktio

Tietokoneohjelmiston toiminto ei ole matemaattinen toiminto. Laskennassa (ohjelmisto) funktio koostuu joukosta lauseita, joita edeltävät argumentit. Modulo-divisioonatoiminnon avaimet ovat kokonaislukuja ja ne on yhdistetty ämpärijoukon indekseihin. Avainjoukko on suuri, joten vain toiminnossa todennäköisesti esiintyvät avaimet kartoitettaisiin. Joten törmäyksiä tapahtuu, kun epätodennäköiset avaimet on kartoitettava.

Lausunnossa,

20/6 = 3R2

20 on osinko, 6 on jakaja ja 3 loput 2 on osamäärä. Loput 2 kutsutaan myös moduuliksi. Huomaa: on mahdollista, että moduuli on 0.

Tätä hajautusta varten pöydän koko on yleensä teho 2, e.g. 64 = 26 tai 256 = 28, jne.  Tämän hajautusfunktion jakaja on alkuluku lähellä taulukon kokoa. Tämä toiminto jakaa avaimen jakajalla ja palauttaa modulin. Moduuli on kauharyhmän indeksi. Kauhaan liittyvä arvo on valitsemasi arvo (avaimen arvo).

Muuttuvan pituuden näppäinten hajautus

Tässä avainsarjan avaimet ovat eripituisia tekstejä. Eri kokonaislukuja voidaan tallentaa muistiin käyttämällä yhtä monta tavua (englanninkielisen merkin koko on tavu). Kun eri avaimet ovat erikokoisia, niiden sanotaan olevan vaihtelevan pituisia. Yksi menetelmä vaihtelevan pituuden hajautuksesta on nimeltään Radix Conversion Hajautus.

Radix-muunnoshajautus

Merkkijonossa jokainen tietokoneen merkki on numero. Tässä menetelmässä,

Hash-koodi (indeksi) = x0ak − 1+x1ak − 2+… + Xk − 2a1+xk − 1a0

Missä (x0, x1,…, xk − 1) ovat syötemerkkijonon merkit ja a on radix, e.g. 29 (katso myöhemmin). k on merkkijonon merkkimäärä. Tässä on enemmän - katso myöhemmin.

Avaimet ja arvot

Avain / arvo-parissa arvo ei välttämättä ole numero tai teksti. Se voi olla myös ennätys. Tietue on vaakasuoraan kirjoitettu luettelo. Avain / arvo-parissa kukin avain voi itse asiassa viitata johonkin muuhun tekstiin tai numeroon tai tietueeseen.

Assosiatiivinen taulukko

Luettelo on tietorakenne, johon luettelokohteet liittyvät, ja luettelossa toimii joukko toimintoja. Jokainen luettelokohde voi koostua pariparista. Yleistä hajautustaulukkoa avaimineen voidaan pitää tietorakenteena, mutta se on enemmän järjestelmä kuin tietorakenne. Avaimet ja niitä vastaavat arvot eivät ole kovin riippuvaisia ​​toisistaan. Ne eivät ole kovin sukulaisia ​​toisiinsa.

Toisaalta assosiatiivinen taulukko on samanlainen asia, mutta avaimet ja niiden arvot ovat hyvin riippuvaisia ​​toisistaan; ne liittyvät hyvin toisiinsa. Sinulla voi olla esimerkiksi assosiatiivinen joukko hedelmiä ja niiden värejä. Jokaisella hedelmällä on luonnollisesti väri. Hedelmän nimi on avain; väri on arvo. Lisäyksen aikana kukin avain lisätään sen arvoon. Poistettaessa jokainen avain poistetaan sen arvolla.

Assosiatiivinen taulukko on hash-taulukon tietorakenne, joka koostuu avain / arvo-parista, jossa avaimille ei ole kopiota. Arvoissa voi olla kaksoiskappaleita. Tässä tilanteessa avaimet ovat osa rakennetta. Toisin sanoen avaimet on tallennettava, kun taas yleisen hast-taulukon kanssa avaimia ei tarvitse tallentaa. Päällekkäisten arvojen ongelma ratkaistaan ​​luonnollisesti kauharyhmän indekseillä. Älä sekoita päällekkäisten arvojen ja indeksin törmäysten välillä.

Koska assosiatiivinen taulukko on tietorakenne, sillä on ainakin seuraavat toiminnot:

Assosiatiiviset taulukko-operaatiot

lisää tai lisää

Tämä lisää uuden avain / arvo-parin kokoelmaan, yhdistämällä avaimen sen arvoon.

nimetä uudelleen

Tämä toiminto korvaa tietyn avaimen arvon uudella arvolla.

poista tai poista

Tämä poistaa avaimen ja sitä vastaavan arvon.

Katso ylös

Tämä toiminto etsii tietyn avaimen arvoa ja palauttaa arvon (poistamatta sitä).

Johtopäätös

Hajataulukon tietorakenne koostuu taulukosta ja funktiosta. Funktiota kutsutaan hash-funktioksi. Toiminto kartoittaa näppäimet taulukon arvoihin taulukon indeksien kautta. Avaimet eivät välttämättä ole osa tietorakennetta. Avainjoukko on yleensä suurempi kuin tallennetut arvot. Kun törmäys tapahtuu, se ratkaistaan ​​joko erillisellä ketjutuksella tai avoimella osoituksella. Assosiatiivinen taulukko on hash-taulukon tietorakenteen erityistapaus.

Parhaat komentorivipelit Linuxille
Komentorivi ei ole vain suurin liittolainen Linuxia käytettäessä - se voi olla myös viihteen lähde, koska voit käyttää sitä pelaamaan monia hauskoja p...
Parhaat Linux-peliohjaimen kartoitussovellukset
Jos haluat pelata pelejä Linuxissa peliohjaimella tyypillisen näppäimistön ja hiiren syöttöjärjestelmän sijaan, on sinulle hyödyllisiä sovelluksia. Mo...
Hyödyllisiä työkaluja Linux-pelaajille
Jos haluat pelata pelejä Linuxissa, on todennäköistä, että olet käyttänyt sovelluksia ja apuohjelmia, kuten Wine, Lutris ja OBS Studio, pelikokemuksen...