Siz de beyninizin hudutlarını zorlayan bulmacaları, sorunları, niyet deneylerini çözmeyi seviyorsanız bir de “iki general problemi”ni deneyin.

İki ordu, iki general, bir elçi ve bir düşman ordusunun yer aldığı sorun; aslında epeyce kolay üzere görünse de net bir sonuca ulaşmak için düşünürken beyin yakabiliyor.

“Ben sorun çözmek için yaratılmışım.” diyenlerin bile kendine olan inancını kırabilecek bu sorunun ayrıntılarına geçelim. Bakalım neler düşüneceksiniz?

“İki general problemi” ya da “iki ordu problemi” nedir?

“Zattiri” ülkesinde bir savaş vardır. Zattiri’deki ordu, 2 bölgeye bölünmüştür. Ordulardan birine “zattiri 1” ordusu, başkasına “zattiri 2” ordusu diyelim. Zattiri ordularının başında da birer general vardır ve mesajlaşarak yani elçi yoluyla anlaşırlar.

Fakat iletilerinin her vakit, ulaşamama riski de vardır. Bu oranın yüzde kaç olduğu fark etmez. Risk vardır işte. Zattiri 1 ordusunun generali, zattiri 2 ordusunun generaline şöyle bir ileti gönderir:

“12 saat sonra, düşmana karşı taarruza geçelim. Bu bildirisi aldığına dair bana teyit mesajı gönder. Şayet göndermezsen bizim zattiri 1 ordusu taarruza geçmeyecek.”

Zattiri 2 ordusunun generali, bu iletisi alır ve ondan beklendiği üzere teyit iletisini elçiyle gönderir lakin kendisi de birebir halde teyit etmek ister. Zattiri 1 ordusunun generalinden teyit bildirisi talep eder ve mesajı almazsa taarruza geçmeyeceğini söyler.

Sorumuza geçelim.

Bu zattiri orduları, birbirine elçi göndererek ortak bir paydada buluşup taarruza geçebilir mi? Hakikaten anlaştıklarından %100 emin olabilir mi?

Yeterince düşündüyseniz sonuç geliyor…

Aslında bu sorunda birden fazla senaryo var. Birinci senaryoya nazaran elçi, iki general ortasında sonsuz bir döngüye girerek bildirisi teyit ediyor. Her iki general de gönderdiği elçinin geri dönüp teyit bildirisi vermesini bekliyor ve tekrar gönderiyor. Bu döngü hiç bitmiyor.

Diğer bir senaryoda ise zattiri 1 ordusu, akının yerini elçi vasıtasıyla bildirmek istiyor. Gönderilen elçi geri dönmüyor. Bu yüzden zattiri 1 ordusu da akına geçemiyor zira elçinin başına yolda bir şey gelmiş olabilir veya zattiri 2 ordusu, akın yerini kabul etmeyip elçiyi öldürmüş olabilir.

Son senaryomuzda ise elçi, zattiri 1 generalinin bildirisini zattiri 2 ordusuna iletiyor ve ordu, iletisi kabul ediyor. Daha sonra elçi, kabul iletisini göndermek için zattiri 1 ordusuna gerçek tekrar yola çıkıyor. Lakin zattiri 2 ordusu hücuma geçmiyor zira elçi, geri dönerken ölmüş olabilir ve bu durumda da zattiri 1 ordusu da hamle etmez. Bu yüzden zattiri 2 ordusu, bildirinin geri iletildiğinden emin olmak zorunda.

Problemi, analoji yoluyla bilgisayar bilimine bağlayabiliriz.

Tarafları; iki general yerine iki bilgisayar sistemi olarak düşünürsek sorun, yeniden irtibat kanalıdır ve iki sistem ortasında her vakit güvensizlik yaratır. Bilgisayar veri iletimi kontrol protokolü TCP (Transmission Control Protocol), bu sistemdeki ilişkiyi sona erdirmek için “4 way handshake” (dört taraflı el sıkışma) yöntemini kullanır. 

Gönderilen bağlantı talebi, kanalın öteki ucundaki sistem bir ACK (acknowledge) ile yanıtlayıp gönderdiği için bir ilişkiyi yanıtlayarak karşı tarafa yardım eder. Tüm mesajların eksiksiz bir biçimde alındığı, sonlandırmayı başlatan sistemden diğer bir ACK ile takip edilir. İki taraf da ilişkinin sonlandırıldığını bilir ama sorun yine iki sistem ortası paylaşılan bilgidir.

Örnek verecek olursak, birinci ileti başarılı olur lakin ikinci bildiri kaybolursa yarı açık bir bağlantı oluşur. Birinci taraf da temasın kapatıldığının farkında olmadığı için TCP muteber bir protokol olmasına karşın sorunu çözemez.

Ee sonuç ne yani?

Yok. Elçi ne kadar git gel yaparsa yapsın iki taraf da atak etmek için gereğince emin olamaz.

Sizin bu soruna dair başka senaryo ve tahlil önerileriniz var mı? Yorumlarda merakla bekliyor olacağız.

Kaynaklar: Medium, Medium 2, Scaler

Kafanız gereğince yanmadıysa aşağıdaki içeriklerimize de göz atabilirsiniz:

What is your reaction?

0
Excited
0
Happy
0
In Love
0
Not Sure
0
Silly

Cevap bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir