Kuva 9: Move-To-Front algoritmin graafinen esitys.
Esimerkkinä esitetyn MTF- algoritmin lisäksi listoihin sovellettavia
muokkaavia algoritmeja on useita ja niiden tehokkuus riippuu hakutapahtumien
hajonnasta. Käyttötilanteeseen soveltuvan tietorakenteen järjestelystrategian
(algoritmin) valinta voidaan toteuttaa geneettisen algoritmin keinoin.
Olio-ohjelmointi Ohjelmistojen kehitystyön näkökulmasta merkittävä paradigmamuutos on ollut
siirtyminen olioperustaisiin ohjelmointityökaluihin ja varusohjelmistoihin.
Uusimmat käyttöjärjestelmät ja -liittymät, esim. AppleOS 7.x, Solaris ja NextStep
on toteutettu olio-ohjelmointikielillä. Olioiden tunnistamisen, käsittelyn ja
rakenteen standardoimiseen pyritään mm. 300 jäsenisessä OMG (Object Management
Group) -työryhmässä, oliomäärittelystä tarkemmin työryhmän raportissa (CORBA).
Sun Microsystems on julkistanut tiedonhallintastategiansa DOE (Distributed
Objects Everywhere), joka pohjaa edellä mainittuun standardiin.
Olio-ohjelmoinnissa proseduurit ja niiden käsittelemät tietorakenteet on
yhdistetty yhdeksi viitattavaksi olioksi. Olioiden sisältöä voidaan muokata vain
olioiden omilla prosesseilla. (kuva 10) Oliot voivat koostua toisista olioista
tai ne voivat olla kantaolion erikoistuneita muotoja, olioiden
rakenteellistoiminnalliset kuvaukset järjestetään luokkakuvauksiksi.
Luokkamäärittelyt organisoidaan hierarkiaan ominaisuuksien periytymisen mukaan.
Oliot laukaisevat toistensa toimintoja lähettämällä viestejä, joiden käynnistämät
toiminnot suorittavat ohjelman.
|
Kuva 10: Olio-ohjelman komponentit ovat itsenäisiä. Ohjelman tehtävän suorittavat keskenään kommunikoivat oliot.
Olioiden näkökulmasta ohjelman ratkaisema tehtävä on vain käyttäytymisen
sivutuote, niin että varsinaisen ohjelman muodostaa keskenään viestivien olioiden
joukko. Oliot tarjoavat luontevan tavan osittaa ohjelma, niin että sen
ominaisuudet voidaan kuvata perimän avulla. Olioihin voidaan liittää niiden
rakenteesta ja toiminnasta 'geneettiset kuvaukset' ja antaa niiden kehittyä
versioitumalla ja valikoitumalla.
Virukset ja agentit Jotkin tietokonevirukset versioituvat ja leviävät elävän organismin tapaan
niin tehokkaasti, että niitä on pidetty elämänmuotona. Tietokonevirukset eivät
yleensä sisällä minkäänlaista perimää edustavaa koodia, eikä niihin kohdistu
minkäänlaista karsintaa. Ne ovat takaisinkytkennältään yksiulotteisia ja varsin
suoraviivaista mukautumisstrategiaa noudattavia olioita. Geneettisen algoritmin
luulisi soveltuvan hyvin juuri kaksiulotteisen takaisinkytkentästrategiansa
vuoksi tietokoneviruksia torjuvien ohjelmien kehittämiseen.
Agenttien suosio on kasvanut verkotettujen sovellusten myötä. Agenteilla
tarkoitetaan itsenäisiä ohjelmamoduleita tai -olioita, jotka tarjoavat
käyttäjille pelkistetyn palveluiden rajapinnan. Palvelun käyttäjän ei tarvitse
kuvata agentille suoritettavaa toimintaa vaan haluttu tulos. Erityistä
mielenkiintoa ovat herättäneet ns. älykkäät agentit, jotka mukautuvat käyttäjän
rutiineihin.
Agentin ulkoinen käyttäytyminen ei muutu, vaikka se suorittuu eri
ympäristöissä. Ne toimivat käyttäjän valtuutuksella, eikä niillä ole
tietoisuutta, mutta niiden yhteisvaikutuksesta on mahdollisuus rakentaa itsestään
ja ympäristöstään tietoisia prosesseja. Tämä näkemys on sittemmin hyväksytty
ihmisen kognitiivisen mallin perustaksi, jossa tietoisuus koostuu
tiedostamattomien prosessien yhdistelmistä (Minsky). Ohjelma-agenteista lisää mm.
lähteessä (Maes). Geneettisen algoritmin näkökulmasta agenttien avulla on helppo
toteuttaa geeneihin liitettäviä ominaisuuksia. Toisaalta erityisesti oppivien
agenttien ominaisuuksia voitaisiin jalostaa perimää hyväksikäyttäen.
|