Yleisimmässä mielessä algoritmi on mikä tahansa yksityiskohtaisten ohjeiden sarja, joka johtaa ennustettavissa olevaan lopputilaan tunnetusta alusta. Algoritmit ovat kuitenkin vain yhtä hyviä kuin annetut ohjeet, ja tulos on virheellinen, jos algoritmia ei ole määritelty oikein.
Esimerkkejä algoritmeista
Yleinen esimerkki algoritmista olisi ohjeet lentokoneen mallin kokoamiseen. Kun otetaan huomioon useiden merkittyjen kappaleiden lähtöjoukko, voidaan noudattaa annettuja ohjeita, joiden tuloksena on ennustettavissa oleva lopputila: valmis lentokone. Virheelliset tulostusohjeet tai vaiheen noudattamatta jättäminen johtavat virheelliseen lopputuotteeseen.
Tietokoneohjelma on toinen yleinen esimerkki. Jokainen tietokoneohjelma on yksinkertaisesti sarja ohjeita, jotka voivat vaihdella monimutkaisuudessa ja jotka on lueteltu tietyssä järjestyksessä ja jotka on suunniteltu suorittamaan tietty tehtävä. Matematiikka käyttää myös algoritmeja yhtälöiden ratkaisemiseen käsin ilman laskinta. Viimeinen esimerkki on ihmisen aivot: useimmat käsitykset ihmisen aivoista määrittävät kaiken käyttäytymisen – ruoan hankkimisesta rakastumiseen – monimutkaisen algoritmin tuloksena.
Algoritmien luokat
Vaikka erityyppisille algoritmeille ei ole yleisesti hyväksyttyä erittelyä, on olemassa yleisiä luokkia, joihin algoritmit usein suostuvat kuulumaan. Näitä ovat:
Dynaamiset ohjelmointialgoritmit: Tämä luokka muistaa vanhemmat tulokset ja yrittää käyttää niitä nopeuttaakseen uusien tulosten löytämistä.
Ahneat algoritmit: Ahneat algoritmit yrittävät paitsi löytää ratkaisun myös löytää ihanteellisen ratkaisun mihin tahansa tiettyyn ongelmaan.
Raa’an voiman algoritmit: Raa’an voiman lähestymistapa alkaa jossain satunnaisessa kohdassa ja toistuu kaikkien mahdollisuuksien läpi, kunnes löytää ratkaisun.
Satunnaistetut algoritmit: Tämä luokka sisältää kaikki algoritmit, jotka käyttävät satunnaislukua missä tahansa prosessin vaiheessa.
Haara- ja sidosalgoritmit: Haarautuneet ja sidotut algoritmit muodostavat ensisijaisen ongelman osaongelmien puun, joka seuraa kutakin haaraa, kunnes se joko ratkaistaan tai yhdistetään toiseen haaraan.
Yksinkertaiset rekursiiviset algoritmit: Tämä tyyppi hakee suoraa ratkaisua välittömästi ja sitten perääntyy löytääkseen yksinkertaisemman ratkaisun.
Taka -alkualgoritmit: Taka -algoritmit testaavat ratkaisua; jos ratkaisu löytyy, algoritmi on ratkaissut, jos ei, se toistuu kerran ja testaa uudelleen, kunnes ratkaisu löytyy.
Jaa ja valloita -algoritmit: Jaa ja valloita -algoritmi on samanlainen kuin haara- ja sidottu -algoritmi, paitsi että se käyttää taaksepäin suuntautuvaa menetelmää, joka toistaa ja jakaa ongelman osaongelmiin.
Sarja- ja rinnakkaisalgoritmit
Näiden yleisten luokkien lisäksi algoritmit voidaan jakaa myös kahteen ensisijaiseen ryhmään: sarjaalgoritmit, jotka on suunniteltu sarjakäyttöön, jolloin kukin toiminto suoritetaan lineaarisessa järjestyksessä; ja rinnakkaisalgoritmit, joita käytetään rinnakkaisprosessoreita käyttävien tietokoneiden kanssa, jolloin useita toimintoja suoritetaan rinnakkain toistensa kanssa. Rinnakkaisalgoritmeja on olemassa myös luonnossa, jos kyseessä on esimerkiksi lajin geneettinen mutaatio.