Paskirstytasis algoritmas yra tam tikros rūšies algoritmas, naudojamas kompiuterių programinėje įrangoje, kuris turi naudoti įvairius tarpusavyje sujungtus procesorius. Paskirstytasis algoritmas yra atsakingas už skirtingų algoritmo dalių paleidimą tuo pačiu metu, kiekviena skirtingame procesoriuje. Tada procesoriai turi bendrauti tarpusavyje, kad programinė įranga veiktų tinkamai.
Norint suprasti paskirstytą algoritmą, lengviausia išnagrinėti, kas yra tipinis algoritmas. Algoritmas yra apibrėžtas procesas, kuris nuo pradžios iki pabaigos apibūdina veiksmus, kurių reikia atlikti norint užbaigti norimą procesą arba išspręsti problemą. Pavyzdžiui, laiško išsiuntimo algoritmas būtų panašus į:
1. Gaukite voką
2. Atidarykite voką
3. Įdėkite raidę
4. Uždarykite voką
5. Pritvirtinkite antspaudą
Tai tęsis tol, kol procesas bus baigtas. Tam tikri veiksmai gali išsiskirti į kitus veiksmus. Jie nurodytų asmeniui, ką daryti, jei jis negali atlikti vieno iš pagrindinių žingsnių, ir galiausiai grąžintų jį prie pradinio algoritmo. Svarbu tai, kad algoritmas galiausiai turi baigtis, nesvarbu, kokiu keliu žmogus jį pasiekia.
Techniškai viskas, kas yra apibrėžtas procesas, gali būti algoritmas, pvz., aukščiau pateiktas laiško išsiuntimo pavyzdys. Kompiuterio algoritmas yra algoritmas, skirtas nurodyti kompiuteriui, ką daryti. Jis turi pradžios ir pabaigos žingsnius, tarp kurių yra keli žingsniai. Ji padeda kompiuteriui atlikti veiksmą ir nurodo, ką daryti, jei kas nors negerai. Jei trūksta kompiuteriui reikalingo failo, jis gali nurodyti praleisti tą veiksmą arba vietoje jo atlikti kitą veiksmą.
Skirtumas tarp algoritmo ir paskirstytojo algoritmo yra tiesiog tas, kad paskirstytasis algoritmas yra sukurtas veikti atskiruose procesoriuose, o įprastas kompiuterio algoritmas taip nėra. Kiekvienas procesorius tuo pačiu metu atlieka skirtingą bendro algoritmo dalį ir pateikia rezultatus.
Naudojant paskirstytus algoritmus kyla keletas problemų. Vienas iš procesorių gali sugesti, todėl ta algoritmo dalis nustos veikti. Taip pat gali kilti ryšio tarp procesorių problema, dėl kurios paskirstytasis algoritmas nepasiektų proceso pabaigos. Daugelis programuotojų tiria paskirstytus algoritmus, kad išsiaiškintų būdus, kaip įveikti šias problemas ir užtikrinti, kad algoritmas būtų užbaigtas net ir įvykus techninei klaidai.