- Steve Ballmer’ın sayı tahmin etme bulmacası, 1 ile 100 arasındaki bir sayıyı bulma oyunu; sabit bir ikili arama alt edilebilir, ancak karma strateji kullanıldığında karşı tarafın seçimine bakılmaksızın pozitif beklenen değer elde edilebilir
- Ballmer, rastgele seçimde bile beklenen değerin negatif olduğunu ve kendisinin uzun sürecek sayıları seçebileceğini düşünüyordu; ancak John Graham-Cumming, rastgele seçimde beklenen değerin $0.20 olduğunu söyleyerek buna karşı çıktı
- Sabit arama desenlerinde 100 sayıdan en az 37’si 6 soru gerektirerek kayıp yaratabilir; bu yüzden karşı taraf stratejiyi bilirse oyuncuyu her seferinde kaybettirebilir
- Çözüm, birden fazla saf arama stratejisinden birini olasılıksal olarak seçen oyun teorisindeki karma stratejidir; bu yöntem, sayı bazındaki kazanç/kayıp farklarını ortalayarak dezavantajlı sayıları ortadan kaldırır
scipy.linprog()ile doğrusal programlama problemi çözülerek bulunan örnek strateji, Ballmer rastgele seçerse ortalama $0.16, düşmanca seçse bile en kötü durumda $0.14 beklenen kâr sağlar
Sayı tahmin etme bulmacası ve önceki karşı argüman
- Ballmer’ın sevdiği söylenen bulmaca, karşı tarafın 1 ile 100 arasında bir sayı tuttuğu ve oyuncu her tahminde bulunduğunda sayının daha yüksek mi daha düşük mü olduğunun söylendiği bir oyundur
- Ödül, ilk tahminde bilinirse $5; sonrasında $4, $3, $2, $1, $0; daha sonraki denemelerden itibaren ise oyuncunun $1, $2, $3 ödemesi şeklindedir
- Ballmer iki nedenle bu oyunun oynanmaması gerektiğini düşünüyordu
- Rastgele sayı seçilse bile kayıp yaratan çok sayıda sayı olduğu için beklenen değerin negatif olduğuna karar vermişti
- İkili aramada en uzun sürecek sayıları stratejik olarak seçebileceğini düşünüyordu
- John Graham-Cumming, “Steve Ballmer’s incorrect binary search interview question” yazısında, Ballmer rastgele sayı seçerse beklenen değerin $0.20 ile pozitif olduğunu söyleyerek buna karşı çıktı
- Bunun da ötesinde, Ballmer’ın sayıyı stratejik olarak seçtiği durumda bile beklenen değeri pozitif olan bir strateji bulunabilir
Sabit ikili aramanın zayıflığı
- Oyuncu her zaman aynı ikili arama stratejisini kullanırsa, 100 sayıdan 37’si doğru cevabı bulmak için 6 soru gerektirir
- Ballmer bu sabit stratejiyi biliyorsa bu 37 “kaybettiren” sayıdan birini seçerek oyuncuya kaybı dayatabilir
- Bu zayıflık yalnızca belirli bir ikili aramayla sınırlı değildir
- Herhangi bir sabit arama deseninde en az 37 sayı kayıp yaratır
- Karşı taraf bu sayıları seçerse oyuncu her seferinde zarar eder
Karma stratejiyle karşılık vermek
- Tek bir arama desenini sabitlemek yerine, birden çok arama deseni hazırlanır ve oyun başlarken bunlardan biri olasılıksal olarak seçilip sonuna kadar korunur
- Oyun teorisinde buna birden çok saf stratejiye dayalı karma strateji denir
- Aynı sayı, bir arama deseninde kazandıran sayı iken başka bir arama deseninde kaybettiren sayı olabilir
- Karma stratejinin amacı, her sayı için beklenen getiriyi ortalayarak tüm sayılarda beklenen değeri pozitif hale getirmektir
Doğrusal programlamayla strateji bulmak
- Amaç, en kötü durum beklenen değerini maksimize eden optimal stratejiyi, yani Nash dengesini bulmak değil; tüm sayılarda kazandıran herhangi bir strateji bulmaktır
- Her saf strateji, uzunluğu 100 olan bir kazanç vektörü
V = (v_1, .., v_100)ile ifade edilebilirv_k, Ballmerksayısını seçtiğinde beklenen getiridir- Örneğin ikili arama
v_50 = 5,v_25 = 4,v_0 = -1gibi değerlere sahip olabilir
- Karma strateji saf strateji
V_k’yip_kolasılığıyla seçerse toplam kazanç vektörüV_mixed = Σ p_i V_iolur - Kazandıran bir strateji bulmak için şu koşulları sağlayan bir doğrusal kombinasyon gerekir
- Her eleman pozitif olmalıdır
- Katsayılar olasılık olduğu için negatif olmamalıdır
- Bu tipik bir doğrusal programlama problemidir ve SciPy’nin
scipy.optimize.linprogaracıyla çözülebilir - Birden fazla ikili arama varyasyonu saf strateji kümesi olarak oluşturulup
scipy.linprog()’a verilen kodda kazandıran bir karma strateji elde edilir
Örnek strateji ve sonuçlar
- Tüm kod gukoff/ballmer_puzzle deposunda yer alıyor
- İlk sonuç oyun başına $0.07 idi; Arthur O’Dwyer yeni saf stratejiler ekleyerek performansı iyileştirdi
- İyileştirilmiş karma stratejinin performansı şöyle
- Ballmer rastgele seçtiğinde ortalama kâr: $0.16
- Ballmer düşmanca seçtiğinde en kötü durum kârı: $0.14
- Örnek karma strateji, birden çok ikili arama varyasyonunu küçük olasılıklarla karıştırır
- Olasılık 0.4714%: ilk tahmin 29; ardından aralığın ortasını tahmin et, eşitlik olursa solu seç
- Olasılık 0.1691%: ilk tahmin 33; ardından ortayı tahmin et, eşitlik olursa solu seç
- Olasılık 0.1299%: ilk tahmin 36; ardından ortayı tahmin et, eşitlik olursa sağı seç
- Olasılık 3.3341%: ilk tahmin 37; ardından ortayı tahmin et, eşitlik olursa sağı seç
- Olasılık 1.7818%: ilk tahmin 43; ardından en kötü durum karmaşıklığını artırmayan aralıktaki en sağdaki öğeyi seç
- Olasılık 1.1608%: ilk tahmin 44; ardından en kötü durum karmaşıklığını artırmayan aralıktaki en soldaki öğeyi seç
- Olasılık 2.1310%: ilk tahmin 42; ardından en kötü durum karmaşıklığını artırmayan aralığın uç tarafındaki öğeyi seç
- Tam strateji 74 satır uzunluğunda; atlanan listenin tamamı GitHub’daki winning strategy bölümünde görülebilir
- Oyun başına ortalama 14 sent kâr harcanan zamana değiyorsa, Ballmer bu oyunu önerse bile oynamaya değer
1 yorum
Hacker News yorumları
Yakın zamanda ilgili yazı: Steve Ballmer'ın hatalı ikili arama mülakat sorusu - https://news.ycombinator.com/item?id=41434637 - Eylül 2024, 240 yorum
Bu yazıda uygulama hoş ama asıl nokta kaçırılmış gibi
Ballmer'ın argümanı özünde kuyruk riski ile ilgili. Hayatta kalmayı önemsiyorsanız beklenen değer, bahis ölçütü olarak hiç iyi değildir. Çünkü yalnızca tek bir fırsatınız var. Pokerde “beklenen olarak” kazanacak el her geldiğinde tüm servetinizi ortaya koymanın mantıksız olmasıyla aynı neden; birkaç el içinde neredeyse kesin olarak batarsınız
Ortalama +$0.07 olsa da ne olursa olsun dağılımın genişliği açıkça 0'ın altına da inebilir. Ortalama olarak kazanma olasılığı kaybetme olasılığından biraz yüksek olabilir, ama gerçekte yalnızca tek bir sonuç alırsınız. Hedef ya kazanmak ya da mahvolmaksa, Ballmer'a borçlanmak istemiyorsanız oynamamak daha iyidir
Daha ilginç olan, bu stratejiyi Monte Carlo simülasyonu ile çalıştırıp galibiyet/mağlubiyet dağılımını görmek. O zaman seçim o kadar da bariz olmayabilir
Oyunu birkaç trilyon kez falan oynayabiliyorsanız elbette sonuna kadar sömürün :P
Kuyruk riski örneği olarak da pek iyi değil. Bariz stratejide kuyruk aşırı derecede kalın
Sam Bankman-Fried beklenen değeri çok severdi ve yazı gelirse dünyanın “değerini” ikiye katlayacak, tura gelirse dünyayı yok edecek bir yazı-tura atacağını söylemesiyle ünlü
Özetle St. Petersburg paradoksu şöyle. Adil bir para, yazı gelene kadar atılır ve oyuncu, para atma sayısı n ise $2^n alır. İlk atışta yazı gelirse $2, ikincide gelirse $4, üçüncüde $8, onuncuda $1024(2^10) alır. Bu oyunun beklenen değerinin sonsuza yaklaştığını göstermek kolaydır
Dolayısıyla tamamen rasyonel bir kişi, bu oyunu oynamak için fiilen herhangi bir tutarı ödemeye istekli olmalıdır. Her sonlu para miktarı sonsuzdan küçük olduğundan, beklenen kazanç her zaman pozitiftir
Ama bu oyunu oynamak için milyonlarca dolar ödemek isteyecek kişi muhtemelen neredeyse yoktur. SBF belki istisna olabilir
Bu, ancak insanların “rasyonel” olmadığını gösterdiğini düşündüğünüzde paradokstur. Gerçekte ise beklenen değerin risk ölçmek için iyi bir ölçüt olmadığı ve herkesin bunu bildiği anlamına geliyor gibi görünüyor
St. Petersburg paradoksu hakkında çok kapsamlı ve ilginç bir yazı: https://plato.stanford.edu/entries/paradox-stpetersburg/
Buradaki çoğu kişiden farklı olarak, bu tür soruların bir insanın nasıl düşündüğünü görmek için epey iyi bir yöntem olduğunu düşünüyorum. Matematik/istatistik/bilgisayar bilimi geçmişiniz varsa, en azından bu problem hakkında bir sohbet başlatabilmeniz beklenir
Ancak varsayımları saklayıp ya da kafanıza göre anlamsız kısıtlar ekleyerek bunu tuzağa dönüştürürseniz, işte oradan itibaren ikna edici olmuyor
Soru “bu oyunu oynar mısın” ise bunun rasyonel matematiksel çevirisi “beklenen değerin 0'dan büyük olup olmadığına karar ver”dir. Kuyruk riskinden söz etmek istiyorsanız fayda fonksiyonunu açıkça belirtmeniz gerekir; bu iki oyuncu için asimetrik de olabilir. Ayrıca niyetin bu olduğunu açıkça söylemeniz gerekir
Açıkçası Steve'in bu problemin matematiksel derinliğini tam kavrayamadığını düşünüyorum
Kelly oranından fazla bahis yaparsanız, özellikle uzun vadede iflas riskiniz artar
https://en.m.wikipedia.org/wiki/Kelly_criterion
Orijinal yazıdaki duruma uygulanır demiyorum. Ama üst yorumla ilgili ve yatırım gibi birçok durumda çok yararlı
Ballmer “hasmane” dediğinde aklıma böyle bir strateji gelmişti. Aslında başlangıçta sabit bir sayı seçmesine hiç gerek yok. Her tahminde, olası sayıların en fazlasını geride bırakan yanıtı vermesi yeterli; böylece hangi strateji olursa olsun yenilgiyi garanti edebilir
Asıl yazı, herhangi bir hasma karşı ortalama en az $0.07 garanti eden karmaşık bir rastgele strateji sunuyor. Oysa Ballmer “seçimi” erteleyip işi uzatmakla her seferinde yedi tahmin yaptırıp 1 dolar ödetebilir
Ortalama $0.07 kazanmayı bekliyorsanız, dolandırıldığınızı fark edene kadar kaç el oynarsınız?
Asıl yazı ilginç ama Ballmer’ın hâlâ bir başlangıç seçimine bağlandığını varsayan, çok zayıf anlamda bir “hasmane” durum kabul ediyor
İlginç biçimde, Ballmer bir commitment scheme kullanırsa oyuncu bunu doğrulayabilir [1]. Örneğin oyunun başında Ballmer 500 rastgele bit üretir, buna 1–100 aralığında seçtiği sayıyı ekler ve sonucu hash’leyip bu hash’i gönderir. Oyun bitince 500 rastgele biti gönderir; oyuncu da artık açıklanan seçilmiş sayıyı bu bitlerle birleştirip hash’lediğinde başta gönderilen hash’in çıkıp çıkmadığını kontrol edebilir. Ballmer yalan söyleyip sayıyı değiştirmek isterse, başka bir sayıyla birleştirildiğinde de aynı hash’i verecek 500 bit bulması gerekir; bu da zordur
[1]: https://en.wikipedia.org/wiki/Commitment_scheme
Her zaman en kötü bloğu veren Tetris varyantı HATERIS’in yaratıcısı tarafından yapılmış
Düzenleme: Ah, hayır. Bu yorum yanlış. Bunu işaret eden fgna’ya teşekkürler
Hasmane Ballmer’ı yenebileceğinize dair daha basit bir kanıt var gibi. Rastgele Ballmer’a karşı ikili aramayla tam olarak aynı beklenen sonuç elde ediliyor
Algoritmamın adı “rastgele ofsetli ikili arama”. Şöyle çalışıyor
offsetdeyinoffsetekleyip 100’e göre kalanını kullanınHepsi bu. Artık Ballmer bu stratejiyi bilse bile belirli bir sayı seçip performansı daha kötü hâle getiremez. Dolayısıyla beklenen sonuç hâlâ oyun başına $0.20 ve yazıda önerilen stratejiden daha iyi
Ballmer’ın yanıldığı birçok şey arasında, bu da onlardan biri gibi görünüyor
İşte dostlar, modern teknik mülakat sürecinin neden saf delilik olduğunu gösteren kusursuz örnek bu
Ballmer’ın sorusu, beklediği yanıtın karmaşıklığı düşünüldüğünde adil görünüyor
Aday muhtemelen matematiksel olarak yanlış bir yanıt verecektir; ama bu süreçte düşünme biçimini gösterir ve biraz bilgisayar bilimi ilkesini de sergiler
Ballmer’ın kariyerinin uzun olduğunu düşünmek gerek. Bu soruyu gerçekten sorduysa muhtemelen 80’lerdeydi ve o dönemde kimse yazıda anlatılan karmaşık çözümün verilmesini beklemezdi
Doğru yanıtı sunsaydı bu harika bir şey olurdu ve hemen işe alınacak biri sayılırdı. Ama bu soru temelden bozuk gibi gelmiyor. Bahse girsin ya da girmesin, hangi yanıt olursa olsun iyi gerekçelendirmesi gerektiği için
Genellikle tüm mülakatçılarla bir tartışma olur ve yalnızca “aday problemi çözdü mü”ye bakılmaz. Kişisel olarak birçok büyük teknoloji şirketi mülakat sorusunu aptalca buluyorum; ama iki tarafta da deneyimleyince sürecin düşündüğüm kadar bozuk olmadığı kanısındayım
Bu durumda da ikili arama hakkında akıl yürütebildiğinizi ve ortalama kârın 0.20 dolar olduğunu gösterebildiğinizi ortaya koymak gibi
Yine de bu sayede https://aphyr.com/posts/340-reversing-the-technical-intervie... ve devamı gibi kaliteli kurmacalar elde ediyoruz
Oyunun tamamının sayısal çözümünü de içerecek şekilde Nash dengesini daha geniş analiz eden yazı https://bowaggoner.com/blahg/2024/09-06-adversarial-binary-s... adresinde
Steve Ballmer’ın net serveti 120 milyar dolar; bir oyunun 30 saniye sürdüğü varsayılırsa hepsini kazanmak 1,6 milyon yıl alır
Little Mathematics Library – Elements of Game Theory: https://mirtitles.org/2012/09/06/little-mathematics-library-...
Oyun teorisindeki karma stratejiyi ele alan çok iyi bir kitap
Kitaptaki motive edici örnek de harika
“İki kart var: bir as ve bir 2. Oyuncu A bunlardan birini rastgele çeker; B hangi kartın çekildiğini göremez. A ası çektiyse ‘Elimde as var’ der ve rakibinden 1 dolar ister. A 2’yi çektiyse (A1) ‘Elimde as var’ deyip rakibinden 1 dolar isteyebilir ya da (A2) elinde 2 olduğunu itiraf edip rakibine 1 dolar verebilir
Rakip gönüllü olarak 1 dolar alırsa bunu kabul etmek zorundadır. Ama kendisinden 1 dolar istenirse (B1) A’nın elinde as olduğuna inanıp 1 dolar verebilir ya da (B2) kontrol isteyip A’nın söylediğinin doğru olup olmadığını görebilir. A’nın elinde gerçekten as varsa B, A’ya 2 dolar ödemek zorundadır. Buna karşılık A blöf yapmışsa ve elinde 2 varsa A, B’ye 2 dolar öder
Bu oyunu analiz edin ve her oyuncunun optimal stratejisini ve beklenen getirisini bulun”