Što je distribuirani algoritam?

Distribuirani algoritam je specifična vrsta algoritma koji se koristi na računalnim softverima koji moraju koristiti različite, međusobno povezane procesore. Distribuirani algoritam odgovoran je za izvođenje različitih dijelova algoritma u isto vrijeme, svaki na drugom procesoru. Procesori tada moraju međusobno komunicirati kako bi softver ispravno radio.

Da biste razumjeli distribuirani algoritam, najlakše je ispitati što je tipični algoritam. Algoritam je definirani proces koji ocrtava od početka do kraja korake koje je potrebno poduzeti da bi se dovršio željeni proces ili riješio problem. Na primjer, algoritam za slanje pisma išao bi nešto poput:
1. Uzmi kuvertu
2. Otvorite omotnicu
3. Umetnite slovo
4. Zatvorite omotnicu
5. Pričvrstite pečat

To će se nastaviti sve dok se proces ne završi. Određeni koraci mogu se granati u druge korake. To bi osobi govorilo što treba učiniti ako ne može dovršiti jedan od glavnih koraka i na kraju bi je dovelo natrag na izvorni algoritam. Važno je da algoritam na kraju mora imati kraj bez obzira na to kojim putem osoba ide da do njega dođe.

Tehnički sve što je definiran proces može biti algoritam, kao što je gornji primjer za slanje pisma. Računalni algoritam je algoritam dizajniran da kaže računalu što treba učiniti. Ima početni i završni korak s nekoliko koraka između. Pomaže računalu da izvrši radnju i daje mu upute što učiniti ako nešto krene po zlu. Ako nedostaje datoteka koja je potrebna računalu, može ga uputiti da preskoči taj korak ili da umjesto njega izvede alternativni korak.

Razlika između algoritma i distribuiranog algoritma je jednostavno u tome što je distribuirani algoritam dizajniran za rad na zasebnim procesorima dok običan računalni algoritam ne bi bio. Svaki procesor u isto vrijeme izvodi različit dio ukupnog algoritma i zatim šalje rezultate.

Postoji nekoliko problema koji se javljaju pri korištenju distribuiranih algoritama. Jedan od procesora mogao bi otkazati, zbog čega bi taj dio algoritma prestao raditi. Također bi mogao postojati komunikacijski problem između procesora koji bi spriječio distribuirani algoritam da dođe do kraja procesa. Mnogi programeri proučavaju distribuirane algoritme kako bi pronašli načine za prevladavanje ovih problema i osigurali da je algoritam dovršen čak i ako postoji tehnička pogreška.