Sanojen kombinatoriikka

testwikistä
Versio hetkellä 25. tammikuuta 2024 kello 20.59 – tehnyt imported>Brrrrrrrrrrrrrrrr(harhar) (growthexperiments-addlink-summary-summary:3|0|0)
(ero) ← Vanhempi versio | Nykyinen versio (ero) | Uudempi versio → (ero)
Siirry navigaatioon Siirry hakuun

Sanojen kombinatoriikka on 1900-luvun lopulla kehittynyt matematiikan ja teoreettisen tietojenkäsittelytieteen haara, jossa tutkitaan sanoja symbolijonoina ilman semanttista merkitystä. Sovelluksia löytyy esimerkiksi molekyylibiologiasta, jossa DNA:ta voidaan mallintaa sanoina nelikirjaimisessa aakkostossa A,C,G, T. [1]

Symboliaakkosto merkitään usein Σ (kreikkalaisen aakkoston iso sigma-kirjain). Tällöin DNA:n kohdalla Σ={A,C,G,T} ja bittien kohdalla Σ={0,1}. Yleensä vaaditaan, että symboliaakkoston on oltava äärellisen kokoinen, ja usein käytetty esimerkki edellisten lisäksi on Σ={a,b,c}, jolloin kyseessä on siis 3-kirjaiminen symboliaakkosto.

Symboliaakkostoon liittyvä sana on mikä tahansa äärellisen pituinen merkkijono, jonka merkit kuuluvat annettuun symboliaakkostoon, ja sanan pituus on sen merkkien lukumäärä. Esimerkiksi Σ={a,b,c}-aakkoston kohdalla bbacb on eräs 5-pituinen sana ja acccbccaba on eräs 10-pituinen sana. Sanoja merkitään usein "sanamuuttujilla" kuten w,u,v,x tai y, jolloin |w| merkitsee w-sanan pituutta. Esimerkiksi jos w=acba, |w|=4.

Tietyn symboliaakkoston Σ määräämää sanojen joukkoa merkitään Σ*, ja siihen kuuluu lisäksi tyhjä sana, jossa ei ole yhtään symbolia (Se on siis 0-pituinen.), ja jota merkitään usein ϵ (kreikkalaisen aakkoston pieni epsilon-kirjain). Selvästi Σ*-joukon eri sanoja on (numeroituvasti) ääretön määrä: 0-pituinen tyhjä sana ϵ, 1-pituiset, 2-pituiset, jne.

Äärellisen pituisten sanojen lisäksi toisinaan tarkastellaan äärettömän pituisia sanoja, joiden kohdalla symbolijono jatkuu äärettömän pitkälle oikealle. Näin on esimerkiksi, kun w=abcabcabcabc..., missä abc-"jakso" jatkuu oikealle äärettömän monta kertaa, mutta tietenkään kaikkien äärettömän pitkien sanojen rakenteen ei tarvitse olla näin säännöllinen.

Sanojen kohdalla niiden välinen peruslaskutoimitus on tulo eli katenaatio, joka yksinkertaisesti tarkoittaa kerrottavien sanojen symbolijonojen asettamista peräkkäin niin, että näin muodostuu uusi sana. Esimerkiksi jos w=abbca, u=bbbcaa ja . merkitsee tuloa, w.u=abbca.bbbcaa=abbcabbbcaa tai u.ϵ=bbbcaa.ϵ=bbbcaa. Selvästi tämä tulo on epäkommutatiivinen (Sillä yleensä w.uu.w.) ja assosiatiivinen (Sillä (w.u).v=w.(u.v) suoraan symbolien peräkkäin asettamisesta johtuen, koska w,u ja v ovat molemmilla puolilla samassa vasemmalta-oikealle-järjestyksessä.).

Assosiatiivisuudesta johtuen sulkumerkit ovat tuloissa tarpeettomia, eli voidaan merkitä (w.u).v=w.(u.v)=w.u.v ja yleisemminkin esimerkiksi w.x.u.y.v. Usein "tulopisteetkin" jätetään merkitsemättä, jolloin äskeinen lyhenee muotoon wxuyv. Tällä tulo-operaatiolla varustettu Σ*-joukko on vapaa monoidi, mistä seuraa, että sanojen tutkimus on yhteydessä myös algebraan.

Tärkeä tulon erikoistapaus on sanan potenssi, joka tarkoittaa sanan kertomista itsellään eksponentin osoittaman määrän, eli siis w𝐧=www...w, missä w-sanoja on peräkkäin n kappaletta. Esimerkiksi jos w=accb ja n=4, niin w𝐧=wwww=accbaccbaccbaccb. Lisäksi määritellään luonnolliseen tapaan, että w𝟏=w ja w𝟎=ϵ.

Myös prefixin käsite on tärkeä. Sana w on sanan u prefix silloin, kun sanan w kirjainjono muodostaa sanan u kirjainjonon alkuosan, mikä merkitään wu. Esimerkiksi w=cabacababcc=u, ja lisäksi Σ*:n kaikilla sanoilla w on tietenkin voimassa se, että ww ja ϵw.

Sanojen kombinatoriikka tutkii mm. seuraavanlaisia kysymyksiä.

Esimerkki 1) Millaisten ehtojen vallitessa sanat kommutoivat, eli w.u=u.w.

On selvää, että sanat w ja u kommutoivat ainakin silloin, jos molemmat ovat saman sanan v potensseja, eli w=v𝐧 ja u=v𝐦, jolloin w.u=v(𝐧+𝐦)=v(𝐦+𝐧)=u.w. Esimerkiksi jos v=baca ja w=v2 ja u=v1, w.u=bacabacabaca=u.w. On melko helposti osoitettavissa, että tämä saman v-sanan potensseina oleminen on riittävyyden lisäksi myös välttämätön ehto sille, että sanat w ja u kommutoisivat, eli w.u on sama sana kuin u.w.

Esimerkki 2) Onko mahdollista, että äärettömän pitkälle oikealle jatkuva sana ei sisällä "neliötä" eli samaa "jaksoa" kahta kertaa peräkkäin. Jos näin on, mikä on pienin symboliaakkoston koko, jolloin tämä on mahdollista.

On selvää, että ainakaan 2-kirjaimisessa symboliaakkostossa tämä ei ole mahdollista, sillä selvästi siinä pisimmät "neliötä" sisältämättömät sanat ovat aba ja bab, mutta esimerkiksi jo baba=(ba)(ba) eli siinä ba on toistuvana "jaksona". Myös yllä esitetty oikealle ääretön sana sisältää "neliön", sillä siinä abc-"jakso" toistuu peräkkäin kahdesti. Esimerkiksi sana cabcacbacabcacbcacba voi ensisilmäyksellä näyttää "neliöttömältä", mutta se silti sisältää bcac-"jakson" kahdesti peräkkäin, sillä cabcacbacabcacbcacba=cabcacbaca(bcac)(bcac)ba. Osoittautuu kuitenkin, että jo 3-kirjaimisessa aakkostossa on löydettävissä tällaisia oikealle äärettömiä "neliöttömiä" sanoja, joista tyypillinen esimerkki on ns. 3-symbolinen Thue-sana. Kyseinen sana on siis "neliötä" sisältämätön mutta oikealle ääretön, ja sen alku on

abcacbabcbacabcacbacabcbabcacbabcbacabcbabcacbacabcacbabcbacabcacbacabcb.

Tämä 3-symbolinen Thue-sana voidaan muodostaa ns. morfismi-iteroinnin avulla, mikä on sanojen kombinatoriikassa yleinen menetelmä muodostaa vastaavanlaisia sanoja. Tässä tapauksessa morfismi h on seuraava

aabc

bac

cb

, mikä tarkoittaa siis sitä, että mm. b:n kohdalle kirjoitetaan ac, jolloin esimerkiksi h(caba)=h(c).h(a).h(b).h(a)=b.abc.ac.abc=babcacabc. Morfismin iterointi on vielä aloitettava jostain pisteestä, joka tässä tapauksessa – niin kuin usein muutenkin – on a-kirjain. Muodostetaan siis äärellisen pituisia sanoja

a=h𝟎(a),h𝟏(a),h𝟐(a),h𝟑(a),h𝟒(a),...=a,abc,abcacb,abcacbabcbac,abcacbabcbacabcacbacabcb,...

, sillä h𝐱(a) tarkoittaa h-morfismin soveltamista a-kirjaimeen x kertaa, jolloin esimerkiksi

h𝟑(a)=h(h(h(a)))=h(h(abc))=h(abc.ac.b)=h(abcacb)=abc.ac.b.abc.b.ac=abcacbabcbac.

Näin saaduissa äärellisen pituisissa sanoissa aiempi on aina seuraavien prefix, mikä nähdään induktiivisesti, sillä jos induktio-oletuksen mukaan

h𝐱(a)h𝐱+𝟏(a) eli h𝐱+𝟏(a)=h𝐱(a).u (Missä siis u on h𝐱+𝟏(a)-sanan loppu sen induktio-oletuksen mukaisen h𝐱(a)-alun jälkeen.), niin

h𝐱+𝟐(a)=h(h𝐱+𝟏(a))=h(h𝐱(a).u)=h(h𝐱(a)).h(u)=h𝐱+𝟏(a).h(u), siis h𝐱+𝟐(a)=h𝐱+𝟏(a).h(u)

mistä taas seuraa, että h𝐱+𝟏(a)h𝐱+𝟐(a). Esimerkiksi

h𝟐(a)=abcacb=abc.acb=h𝟏(a).acb, jolloin h𝟑(a)=h(h𝟐(a))=h(h𝟏(a).acb)=h(h𝟏(a)).h(acb)=h𝟐(a).abcbac.

Lisäksi induktion perusaskeleena tässä on tietenkin se, että

h𝟎(a)=aabc=h𝟏(a).

Iteroiden saadut sanat voidaan siis tulkita saman oikealle äärettömän sanan yhä piteneviksi (On voimassa |h𝐱(a)|<|h𝐱+𝟏(a)|, sillä h-morfismi kirjoittaa jokaisen kirjaimen tilalle vähintään yhden kirjaimen, ja lisäksi "iteraatioalkujen" alussa on a-kirjain, ja a-kirjainten tilalle kirjoitetaan abc, mistä seuraa, että "iteraatioalkujen" pituus kasvaa aidosti.) äärellisen pituisiksi aluiksi, jolloin nämä "iteraatioalut" selvällä tavalla määräävät yksikäsitteisen oikealle äärettömän 3-symbolisen Thue-sanan. Tämän x:nnes kirjain määräytyy niin, että katsotaan mikä on h𝐱(a)-"iteraatioalun" x:nnes kirjain. Tässä h𝐱(a):ää käytettiin siksi, että "iteraatioalku" olisi riittävän pitkä (Onhan x|h𝐱(a)|.), mutta käytännössä riittää iteroida selvästi vähemmän kuin x kertaa (Oikeastaan helposti nähdään, että |h𝐱(a)|=32(𝐱𝟏), kun 1x.).

On syytä huomata, että yllä osoitettiin vain se, että annetun h-morfismin a-iteroinnilla muodostuu mielekkäällä tavalla oikealle ääretön sana. Sitä tässä ei osoitettu, että kyseinen sana on myös "neliötön", vaan tämän osoittaminen vaatisi oman tarkastelunsa, jota tässä ei esitetä. Erityisesti on syytä huomata se, että yleisestikin morfismiin sijoitettavan sanan "neliöttömyys" ei vielä takaa tuloksen "neliöttömyyttä". Tästä esimerkkinä h-morfismi, jossa nyt aiemman sijaan

aab

bc

cacb

, jota a-kirjaimesta iteroiden saataisiin vastaavalla tavalla oikealle ääretön sana, sillä ah𝟏(a)- ja pitenemis-vaatimukset täyttyvät. Kuitenkaan näin saatu sana ei ole "neliötön", sillä vaikka vielä h𝟑(a)=abcacb on "neliötön", niin h𝟒(a)=h(a).h(b).h(c).h(a).h(c).h(b)=abcacbabacbc=abcac.ba.ba.cbc, eli h𝟒(a) sisältää ba-"neliön". Tällainen "neliön ilmaantuminen" on mahdollista erityisesti siksi, että "ilmaantuvan neliön" ei tarvitse "osua tasan" h(.)-"lohkoihin", vaan se voi muodostua myös niiden välissä kuten yllä, missä ba-"neliö" muodostui h(c).h(a).h(c)=acb.ab.acb=ac.ba.ba.cb-"osuuden" väliin niin, että "osuuden" vasen ac-"reuna" ja oikea cb-"reuna" eivät ole mukana muodostamassa "neliötä".

Lähteet

Malline:Viitteet


Malline:Tynkä/Matematiikka