Kaj je porazdeljeni algoritem?

Porazdeljeni algoritem je posebna vrsta algoritma, ki se uporablja v računalniški programski opremi, ki mora uporabljati različne, med seboj povezane procesorje. Porazdeljeni algoritem je odgovoren za istočasno izvajanje različnih delov algoritma, vsakega na drugem procesorju. Procesorji morajo nato med seboj komunicirati, da programska oprema deluje pravilno.

Da bi razumeli porazdeljeni algoritem, je najlažje preučiti, kaj je tipičen algoritem. Algoritem je definiran proces, ki od začetka do konca opisuje korake, ki jih je treba izvesti za dokončanje želenega procesa ali rešitev težave. Na primer, algoritem za pošiljanje pisma bi šel nekako v skladu s tem:
1. Pridobite ovojnico
2. Odprite ovojnico
3. Vstavite črko
4. Zaprite ovojnico
5. Pritrdite žig

To se bo nadaljevalo, dokler se postopek ne zaključi. Nekateri koraki se lahko odcepijo v druge korake. Ti bi osebi povedali, kaj naj stori, če ne bi mogel dokončati enega od glavnih korakov, in bi jo sčasoma pripeljal nazaj do prvotnega algoritma. Pomembno je, da mora algoritem sčasoma imeti konec, ne glede na to, po kateri poti se oseba izbere, da ga doseže.

Tehnično je lahko vse, kar je definiran proces, algoritem, kot je zgornji primer za pošiljanje pisma. Računalniški algoritem je algoritem, zasnovan tako, da računalniku pove, kaj naj naredi. Ima začetni in končni korak z več koraki vmes. Računalniku pomaga izvesti dejanje in mu pove, kaj naj stori, če gre kaj narobe. Če datoteka, ki jo potrebuje računalnik, manjka, mu lahko naroči, naj ta korak preskoči ali namesto njega izvede nadomestni korak.

Razlika med algoritmom in porazdeljenim algoritmom je preprosto v tem, da je porazdeljeni algoritem zasnovan za delovanje na ločenih procesorjih, medtem ko običajni računalniški algoritem ne bi bil. Vsak procesor hkrati izvaja drugačen del celotnega algoritma in nato predloži rezultate.

Pri uporabi porazdeljenih algoritmov se pojavlja več težav. Eden od procesorjev bi lahko odpovedal, zaradi česar bi ta del algoritma prenehal delovati. Med procesorji bi lahko prišlo tudi do komunikacijske težave, ki bi preprečila, da bi porazdeljeni algoritem dosegel konec procesa. Mnogi programerji preučujejo porazdeljene algoritme, da bi našli načine za premagovanje teh težav in zagotovili, da je algoritem dokončan, tudi če pride do tehnične napake.