|
Ohjelman muodostava säännöstö koostuu käsiteltävistä sääntö-suoritus pareista
(kuva 4), mahdolliset sääntöosat voidaan kuvata ne määrittävän aakkoston ja
kieliopin avulla. Aakkoston lisäksi usein käytetään erityistä hälläväliä -merkkiä
(don't care), esim. #, jonka avulla sääntöjä voidaan ryhmitellä luokiksi.
Suoritusosa tuottaa uusia sääntöjä ja päättyviä toimintoja (A, B, kuvassa 4).
Kuvan prosessia voisi ajatella esimerkiksi jonkin Prologin tai Lispin
epämääräisen murteen toteuttavana tulkkina.
Jos säännöt kattavat kaikki mahdolliset järjestelmän saamat syötteet,
sääntöjen sanotaan olevan syötejoukon suhteen laskennallisesti täydellisiä. Saman
syötejoukon suhteen laskennallisesti täydelliset järjestelmät ovat yhtä
ilmaisuvoimaisia, mikä tässä yhteydessä tarkoittaa sitä, että proseduraalisesti
toteutetut algoritmit voidaan ilmaista myös sääntöjoukon avulla.
Jonkinlaisen käsityksen sääntöjärjestelmien mahdollisuuksista antaa laajalti
rikollisten tunnistuksessa käytetty tunnistusohjelma, jossa kymmenen hiusrajaa,
kymmenen silmäparia, kymmenen nenää, kymmenen suuta ja kymmenen leukaa
yhdistetään viidelläkymmenellä perussäännöllä niin, että ne tuottavat kaikki
kuvapankin satatuhatta erilaista kasvoa.
Sääntöjen oikean puolen suorittaminen voi laukaista uusia sääntöjä, joiden
sivuvaikutukset suorittavat ohjelmalle määritellyn tehtävän. Ohjelman suoritus
päättyy sääntöihin, jotka eivät aktivoi uusia sääntöjä. Jos sääntöihin sidotaan
muistia, niiden käyttäytymistä voidaan tarkkailla ja jopa muokata ajoaikaisesti.
Sääntöjen muistia käytetään, kun halutaan liittää sääntöihin niitä arvottavia
painokertoimia esim. suorituskertojen mukaan.
Kun säännöt toteutetaan suoritusaikaisesti toisistaan riippumattomiksi,
voidaan niitä tarvittaessa hajauttaa rinnakkaisprosessorijärjestelmien
suoritettavaksi. Riippumattomat säännöt tukevat myös geneettiseen algoritmiin
sisältyvää monikerroksista rinnakkaisuutta - niin yksilön perimää kuin sukupolvea
joukkoina käsittelevissä operaatioissa.
|