Düşünürken İnsanın Beynine Kalori Harcatan Bir Sorun: İki General Problemi

Bu tarz düşünce deneylerini seviyorsanız eğer İki General Problemi de hoşunuza gidecektir.
Düşünürken İnsanın Beynine Kalori Harcatan Bir Sorun: İki General Problemi

teorik olmakla beraber pratikte de kullanım alanları bulmuş bir problem iki general problemi. (networking, tcp vs.)

problem şudur

aynı orduya mensup iki generalimiz var. bu arkadaşlar ve orduları ayrı ayrı yerlerde konuşlanmış. mesajlaşarak anlaşıyorlar ancak mesajlaşmada kullandıkları sistemde mesajın gönderilememe riski var (%10 diyelim). birinci general, diğerine bir mesaj gönderiyor.

mesaj 

hocam yarın sabah güneş doğarken ortak bir saldırı yapalım. mesajı aldığına dair teyit mesajını bekliyorum. teyit mesajını almazsam ben de saldırmayacağım.

ikinci general mesajı alıyor ve kabul ve teyit mesajını gönderiyor. ancak o da mesajının gittiğinden emin olmak istiyor ve o da teyit mesajı istiyor. mesajı alamazsa saldırıya katılmayacağını da ekliyor.

soru şu

kaç mesajlaşmadan sonra iki general de diğerinin de saldırı kararına uyacağına %100 emin olarak gönül rahatlığı ile saldıraya geçebilir?

sonuç?

haberci (aynı kişi dahi olsa) sürekli iki general arasında gidip gelir. habire "mesajınız onaylandı" bilgisini verir. istersiniz ki bu döngü bir yerde bitsin. soruda da bu istenmiş zaten, ne zaman biter bu mesaj trafiği ve iki taraf da emin olur diye.

cevap: hiçbir zaman. neden? çünkü her general, son gönderdiği habercinin geri dönmesini bekler tam olarak emin olmak için. e haberci bir tarafa son kez gidip onay mesajını verince, diğer taraf dertlenir, 'ne oldu acep verdi mi mesajı' diye. bu nedenle haberci sürekli iki taraf arasında gidip gelmek zorundadır.

yakalanırsa, iş komple yaş olur. iki tarafta haber alamaz ve emin olamaz.

başka bir görüş

teorik durumda bahsedildiği üzere, haber iletiminde herhangi bir hata/gitmeme ihtimalinin varlığında mutabakatla ilgili %100 emin olmak mümkün değil. ama pratikte mümkün.

askeri protokoller farklılık gösterebilir ama hemen hemen eminim ki özü birçok durumda bilgisayar bilimlerinin alanına giren çözümlerinkiyle aynıdır. networking özelinde en yaygın çözümlerden biri three way handshake, veya üç yollu elsıkışma; özü şu:

- 2 sefer karşılıklı olarak "alındı" yollamak, bunun başarılı mutabakat için yeterli olduğunu karşılıklı olarak varsaymak.

- bir zamanaşımı (timeout) içinde gönderilen ve alınan alındıların sayısında herhangi bir tarafta bir eksiklik varsa iletişimi belli bir noktadan yeniden başlatmak.

böylelikle pratikteki iletim hata oranınız %100'e çok yakın değilse, yani tamamen çevrimdışı değilseniz, çok fazla olmayan tekrardan sonra başarılı mutabakatı pratikte garantileyebiliyorsunuz. tekrarlı olasılık hesabı üsteller üzerinden şekillendiğinden, birçok durumda teorik olarak bile örneğin "azami 100 tekrarda mutabakatın başarısız olma olasılığı kafama yıldırım düşüp beni öldürme olasılığından daha düşük" diyebilecek konuma geçebiliyorsunuz.

Seçim Yapamadığı İçin Açlıktan Ölen Bir Hayvanı Konu Alan Paradoks: Buridan'ın Eşeği

Tramvay İkilemi: 5 Kişinin Kurtulabilmesi İçin 1 Kişiyi Öldürür Müsün?