Dağıtılmış bir algoritma, bilgisayar yazılımı üzerinde, çeşitli, birbirine bağlı işlemciler kullanması gereken belirli bir algoritma türüdür. Dağıtılmış algoritma, algoritmanın farklı bölümlerini, her biri farklı bir işlemcide aynı anda çalıştırmaktan sorumludur. İşlemciler daha sonra yazılımın düzgün çalışması için birbirleriyle iletişim kurmalıdır.
Dağıtılmış algoritmayı anlamak için, tipik bir algoritmanın ne olduğunu araştırmak en kolay yoldur. Bir algoritma, istenen işlemi tamamlamak veya bir problemi çözmek için atılması gereken adımları baştan sona gösteren bir süreçtir. Örneğin, bir mektubu postalamak için bir algoritma, aşağıdaki satırlar boyunca bir şey yapar:
1. Zarfı alın
2. Zarfı aç
3. Mektup ekle
4. Zarfı kapatın
5. Pul ekle
Bu süreç tamamlanıncaya kadar devam edecek. Bazı adımlar diğer adımlara dalabilir. Bunlar, kişiye ana adımlardan birini tamamlayamadığında ne yapması gerektiğini söyler ve nihayetinde onu orijinal algoritmaya geri götürür. Önemli olan, algoritmanın sonunda, kişinin kendisine ulaşmak için kullandığı yoldan bağımsız olarak sona ermesi gerektiğidir.
Teknik olarak tanımlanmış bir işlem olan herhangi bir şey, bir mektubu postalamak için yukarıdaki örnek gibi bir algoritma olabilir. Bir bilgisayar algoritması, bilgisayara ne yapacağını söylemek için tasarlanmış bir algoritmadır. Arada birkaç adım bulunan bir başlangıç ve bitiş adımı vardır. Bilgisayarın bir eylem gerçekleştirmesine yardımcı olur ve bir şeyler ters giderse ne yapacağını söyler. Bilgisayarın ihtiyaç duyduğu bir dosya eksikse, bu adımı atlamasını veya yerine alternatif bir adım gerçekleştirmesini isteyebilir.
Bir algoritma ve dağıtılmış bir algoritma arasındaki fark, basitçe dağıtılmış algoritmanın, düzenli bir bilgisayar algoritması olmazken, ayrı işlemciler üzerinde çalışacak şekilde tasarlanmasıdır. Her işlemci aynı anda genel algoritmanın farklı bir bölümünü gerçekleştiriyor ve ardından sonuçları gönderiyor.
Dağıtılmış algoritmalar kullanılırken ortaya çıkan birkaç sorun var. İşlemcilerden biri başarısız olabilir ve algoritmanın bu kısmının çalışmamasına neden olabilir. İşlemciler arasında dağıtılmış algoritmanın işlemin sonuna ulaşmasını engelleyen bir iletişim sorunu da olabilir. Birçok programcı, bu sorunların üstesinden gelmenin yollarını bulmak ve teknik bir hata olsa bile algoritmanın tamamlandığından emin olmak için dağıtılmış algoritmaları inceler.


