Mikä on hajautettu algoritmi?

Hajautettu algoritmi on tietynlainen algoritmi, jota käytetään tietokoneohjelmistossa ja jonka on käytettävä erilaisia, toisiinsa yhteydessä olevia suorittimia. Hajautettu algoritmi on vastuussa algoritmin eri osien suorittamisesta samanaikaisesti, kukin eri prosessorilla. Suorittimien on sitten kommunikoitava keskenään, jotta ohjelmisto toimii oikein.

Hajautetun algoritmin ymmärtämiseksi on helpointa tutkia, mikä on tyypillinen algoritmi. Algoritmi on määritelty prosessi, joka hahmottaa alusta loppuun vaiheet, jotka on suoritettava halutun prosessin suorittamiseksi tai ongelman ratkaisemiseksi. Esimerkiksi kirjeen lähettämisen algoritmi menisi jotakuinkin seuraavalla tavalla:
1. Hanki kirjekuori
2. Avaa kirjekuori
3. Lisää kirjain
4. Sulje kirjekuori
5. Kiinnitä leima

Tämä jatkuu, kunnes prosessi on saatu päätökseen. Tietyt vaiheet voivat haarautua muihin vaiheisiin. Nämä kertoisivat henkilölle, mitä tehdä, jos hän ei pystyisi suorittamaan yhtä päävaiheista ja johtaisi hänet lopulta takaisin alkuperäiseen algoritmiin. Tärkeää on, että algoritmilla on lopulta oltava loppu, riippumatta siitä, millä polulla henkilö kulkee sen saavuttamiseksi.

Teknisesti kaikki määritelty prosessi voi olla algoritmi, kuten yllä oleva esimerkki kirjeen lähettämisestä. Tietokonealgoritmi on algoritmi, joka on suunniteltu kertomaan tietokoneelle, mitä tehdä. Siinä on alku- ja loppuvaihe, jonka välissä on useita vaiheita. Se auttaa tietokonetta suorittamaan toiminnon ja neuvoo, mitä tehdä, jos jokin menee pieleen. Jos tietokoneen tarvitsema tiedosto puuttuu, se saattaa kehottaa häntä ohittamaan kyseisen vaiheen tai suorittamaan toisen vaiheen sen sijaan.

Ero algoritmin ja hajautetun algoritmin välillä on yksinkertaisesti se, että hajautettu algoritmi on suunniteltu toimimaan erillisillä prosessoreilla, kun taas tavallinen tietokonealgoritmi ei olisi. Jokainen prosessori suorittaa eri osan kokonaisalgoritmista samanaikaisesti ja lähettää sitten tulokset.

Hajautettuja algoritmeja käytettäessä ilmenee useita ongelmia. Yksi prosessoreista voi epäonnistua, jolloin algoritmin osa lakkaa toimimasta. Prosessorien välillä voi olla myös kommunikaatio -ongelma, joka estää hajautetun algoritmin pääsemästä prosessin loppuun. Monet ohjelmoijat tutkivat hajautettuja algoritmeja selvittääkseen tapoja ratkaista nämä ongelmat ja varmistaakseen, että algoritmi on suoritettu loppuun, vaikka kyseessä olisi tekninen virhe.