- Steve Ballmer का number-guessing puzzle 1~100 के बीच का नंबर खोजने वाला गेम है। इसमें fixed binary search का counter किया जा सकता है, लेकिन mixed strategy का उपयोग करने पर प्रतिद्वंद्वी की पसंद से स्वतंत्र रूप से positive expected value बनाया जा सकता है
- Ballmer का मानना था कि random choice में भी expected value negative है और वह ऐसा नंबर चुन सकता है जिसे खोजने में सबसे ज़्यादा समय लगे, लेकिन John Graham-Cumming ने तर्क दिया कि random choice पर expected value $0.20 है
- Fixed search pattern में 100 नंबरों में से कम-से-कम 37 नंबर ऐसे होते हैं जिनके लिए 6 सवाल पूछने पड़ते हैं, जिससे नुकसान हो सकता है; इसलिए अगर प्रतिद्वंद्वी रणनीति जानता हो तो वह हर बार खिलाड़ी को हरा सकता है
- समाधान है कई pure search strategies में से किसी एक को probability के साथ चुनने वाली game theory की mixed strategy, जो नंबर-दर-नंबर जीत-हार के अंतर को average करके प्रतिकूल नंबरों को खत्म करती है
scipy.linprog()से linear programming problem हल करके मिली एक उदाहरण रणनीति में, अगर Ballmer random चुने तो औसतन $0.16, और adversarial तरीके से चुने तो worst case में $0.14 का expected profit मिलता है
नंबर-गेसिंग पहेली और पहले का प्रतिवाद
- Ballmer को पसंद आने वाली यह पहेली ऐसी है कि प्रतिद्वंद्वी 1~100 के बीच एक नंबर सोचता है, और खिलाड़ी हर guess पर यह जानता है कि जवाब उससे बड़ा है या छोटा
- इनाम की संरचना यह है: पहली guess में सही होने पर $5, उसके बाद $4, $3, $2, $1, $0, और फिर उसके बाद खिलाड़ी को $1, $2, $3 देना पड़ता है
- Ballmer का मानना था कि यह गेम नहीं खेलना चाहिए, दो कारणों से
- random तरीके से नंबर चुनने पर भी expected value negative है क्योंकि नुकसान देने वाले नंबर ज़्यादा हैं
- वह रणनीतिक रूप से ऐसा नंबर चुन सकता है जिसे binary search से खोजने में सबसे ज़्यादा समय लगे
- John Graham-Cumming ने “Steve Ballmer’s incorrect binary search interview question” में इसका प्रतिवाद किया और कहा कि अगर Ballmer random तरीके से नंबर चुने तो expected value $0.20 positive होती है
- इससे आगे बढ़कर, Ballmer अगर रणनीतिक रूप से नंबर चुने तब भी positive expected value देने वाली रणनीति खोजी जा सकती है
Fixed binary search की कमजोरी
- अगर खिलाड़ी हमेशा एक ही binary search strategy का उपयोग करे, तो 100 नंबरों में से 37 नंबर ऐसे होंगे जिन्हें सही जवाब तक पहुँचने के लिए 6 सवाल चाहिए
- अगर Ballmer उस fixed strategy को जानता हो, तो वह इन 37 “हारने वाले” नंबरों में से कोई एक चुनकर खिलाड़ी पर नुकसान थोप सकता है
- यह कमजोरी केवल किसी एक खास binary search तक सीमित नहीं है
- किसी भी fixed search pattern में कम-से-कम 37 नंबर नुकसान कराते हैं
- अगर प्रतिद्वंद्वी उन नंबरों को चुने, तो खिलाड़ी हर बार नुकसान उठाएगा
Mixed strategy से जवाब
- एक ही search pattern को fix करने के बजाय, कई search patterns तैयार किए जाते हैं और गेम शुरू होने पर उनमें से एक को probability के साथ चुना जाता है, जिसे अंत तक बनाए रखा जाता है
- game theory में इसे कई pure strategies पर आधारित mixed strategy कहा जाता है
- एक ही नंबर किसी एक search pattern में जीतने वाला नंबर हो सकता है और किसी दूसरे pattern में हारने वाला
- mixed strategy का लक्ष्य हर नंबर के expected payoff को average करके ऐसा बनाना है कि सभी नंबरों पर expected value positive रहे
Linear programming से रणनीति खोजना
- लक्ष्य worst case expected value को maximize करने वाली optimal strategy, यानी Nash equilibrium, खोजना नहीं है; बल्कि ऐसी कोई भी strategy खोजना है जो सभी नंबरों पर जीत दे
- हर pure strategy को लंबाई 100 के win vector
V = (v_1, .., v_100)के रूप में लिखा जा सकता हैv_kवह expected payoff है जब Ballmer नंबरkचुनता है- उदाहरण के लिए, binary search में
v_50 = 5,v_25 = 4,v_0 = -1जैसे मान हो सकते हैं
- अगर mixed strategy pure strategy
V_kको probabilityp_kसे चुनती है, तो कुल win vectorV_mixed = Σ p_i V_iहोगा - जीतने वाली strategy पाने के लिए ऐसा linear combination चाहिए जो इन शर्तों को पूरा करे
- हर तत्व positive होना चाहिए
- coefficients probability हैं, इसलिए वे negative नहीं हो सकते
- यह एक सामान्य linear programming समस्या है, और इसे SciPy के
scipy.optimize.linprogसे हल किया जा सकता है - अलग-अलग binary search variants को pure strategy set बनाकर
scipy.linprog()में डाले गए code से winning mixed strategy मिलती है
उदाहरण रणनीति और परिणाम
- पूरा code gukoff/ballmer_puzzle में उपलब्ध है
- शुरुआती परिणाम प्रति गेम $0.07 था, और Arthur O’Dwyer ने नई pure strategies जोड़कर प्रदर्शन बेहतर किया
- बेहतर mixed strategy का प्रदर्शन इस प्रकार है
- Ballmer के random चुनने पर औसत profit: $0.16
- Ballmer के adversarial चुनने पर worst-case profit: $0.14
- उदाहरण mixed strategy कई binary search variants को छोटी probabilities के साथ मिलाती है
- probability 0.4714%: पहली guess 29, उसके बाद interval के बीच का मान guess करना, और tie होने पर बाईं ओर चुनना
- probability 0.1691%: पहली guess 33, उसके बाद बीच का मान guess करना, और tie होने पर बाईं ओर चुनना
- probability 0.1299%: पहली guess 36, उसके बाद बीच का मान guess करना, और tie होने पर दाईं ओर चुनना
- probability 3.3341%: पहली guess 37, उसके बाद बीच का मान guess करना, और tie होने पर दाईं ओर चुनना
- probability 1.7818%: पहली guess 43, उसके बाद interval के भीतर सबसे दायाँ तत्व चुनना जो worst-case complexity न बढ़ाए
- probability 1.1608%: पहली guess 44, उसके बाद interval के भीतर सबसे बायाँ तत्व चुनना जो worst-case complexity न बढ़ाए
- probability 2.1310%: पहली guess 42, उसके बाद interval के किनारे वाला तत्व चुनना जो worst-case complexity न बढ़ाए
- पूरी strategy 74 lines लंबी है, और छोड़ी गई पूरी सूची GitHub की winning strategy में देखी जा सकती है
- अगर प्रति गेम औसतन 14 सेंट का मुनाफ़ा लगाए गए समय के हिसाब से ठीक लगे, तो Ballmer यह गेम प्रस्तावित करे तब भी इसे खेलना उचित हो सकता है
1 टिप्पणियां
Hacker News की राय
हाल की संबंधित पोस्ट: Steve Ballmer का गलत binary search interview question - https://news.ycombinator.com/item?id=41434637 - सितंबर 2024, 240 comments
इस लेख में application तो शानदार है, लेकिन लगता है कि core point छूट गया है
Ballmer की दलील मूल रूप से tail risk के बारे में है। अगर survival को अहमियत देते हैं, तो expected value betting criterion के तौर पर बिल्कुल अच्छा नहीं है। क्योंकि मौका सिर्फ एक बार मिलता है। यह उसी वजह जैसा है कि poker में हर बार “expected” winning hand आने पर अपनी पूरी net worth दांव पर लगाना समझदारी नहीं है; कुछ ही hands में आपका दिवालिया होना लगभग तय हो जाएगा
average +$0.07 हो या कुछ भी, distribution की चौड़ाई साफ तौर पर 0 से नीचे भी जा सकती है। औसतन जीतने की संभावना हारने की संभावना से थोड़ी ज्यादा हो सकती है, लेकिन असल में आपको सिर्फ एक outcome मिलता है। अगर goal जीतना या पूरी तरह खत्म हो जाना है, और आप Ballmer के कर्जदार नहीं बनना चाहते, तो बेहतर है न खेलें
ज्यादा दिलचस्प यह होगा कि इस strategy की Monte Carlo simulation करके जीत-हार का distribution देखा जाए। तब choice शायद इतनी साफ न लगे
अगर आप यह game कुछ trillion बार खेल सकते हैं, तो जाहिर है जमकर लूट लेना चाहिए :P
tail risk example के तौर पर भी यह खास नहीं है। obvious strategy में tail बेहद fat है
Sam Bankman-Fried expected value को बहुत पसंद करते थे, और famously कहा था कि वे ऐसा coin toss करेंगे जिसमें heads आने पर दुनिया की “value” दोगुनी हो जाए, लेकिन tails आने पर दुनिया नष्ट हो जाए
संक्षेप में St. Petersburg paradox यह है। एक fair coin तब तक उछाला जाता है जब तक heads न आ जाए, और player को coin उछालों की संख्या n होने पर $2^n मिलते हैं। पहले toss पर heads आए तो $2, दूसरे पर $4, तीसरे पर $8, दसवें पर $1024(2^10), इसी तरह। यह आसानी से दिखाया जा सकता है कि इस game की expected value infinity की ओर जाती है
इसलिए पूरी तरह rational व्यक्ति को इस game को खेलने के लिए practically कोई भी रकम देने को तैयार होना चाहिए। क्योंकि कोई भी finite पैसा infinity से कम है, इसलिए expected gain हमेशा positive है
लेकिन शायद ही कोई इस game को खेलने के लिए millions of dollars देने को तैयार होगा। SBF शायद exception हों
यह तभी paradox है जब आपको लगे कि यह दिखाता है कि लोग “rational” नहीं हैं। असल में यह लगता है कि expected value risk को measure करने का अच्छा पैमाना नहीं है, और सबको यह पता है
St. Petersburg paradox पर बहुत comprehensive और दिलचस्प लेख: https://plato.stanford.edu/entries/paradox-stpetersburg/
यहां ज्यादातर लोगों के उलट, मुझे लगता है कि इस तरह के questions यह देखने का काफी अच्छा तरीका हैं कि कोई व्यक्ति कैसे सोचता है। अगर math/statistics/computer science background है, तो कम से कम इस problem पर conversation शुरू कर पाने की उम्मीद करनी चाहिए
लेकिन अगर assumptions छिपाई जाएं या अपनी मर्जी से बेकार constraints जोड़कर इसे trap बना दिया जाए, तो वहीं से यह स्वीकार्य नहीं लगता
अगर question “क्या आप यह game खेलेंगे” है, तो उसका rational mathematical translation है “तय करें कि expected value 0 से ज्यादा है या नहीं।” tail risk की बात करनी हो तो utility function specify करना होगा, और वह दोनों players के लिए asymmetric भी हो सकता है। और यह साफ कहना होगा कि यही intent है
सच कहूं तो लगता है Steve ने इस problem की mathematical depth ठीक से नहीं समझी
Kelly fraction से ज्यादा bet करने पर, खासकर long term में, ruin risk बढ़ जाता है
https://en.m.wikipedia.org/wiki/Kelly_criterion
यह नहीं कह रहा कि यह original post की situation पर लागू होता है। बस parent comment से relevant है, और investing जैसी कई situations में बहुत useful है
जब Ballmer ने “adversarial” कहा, तो मेरे दिमाग में यही strategy आई थी। असल में उसे शुरुआत में कोई fixed number चुनने की बिल्कुल जरूरत नहीं है। हर guess पर वह ऐसा जवाब दे सकता है जिससे संभव numbers सबसे ज्यादा बचे रहें, और तब किसी भी strategy के खिलाफ वह हार सुनिश्चित कर सकता है
मूल लेख किसी भी adversary के खिलाफ औसतन कम से कम $0.07 की guarantee देने वाली एक जटिल randomized strategy देता है। दूसरी तरफ Ballmer सिर्फ “चुनाव” टालकर और खींचते रहकर हर बार सात guesses करवाकर 1 dollar दिलवा सकता है
अगर आपको उम्मीद हो कि आप औसतन $0.07 कमाएंगे, तो ठगे जाने का एहसास होने से पहले आप कितने games खेलेंगे?
मूल लेख दिलचस्प है, लेकिन वह “adversarial” को बहुत कमजोर अर्थ में मानता है, जहां Ballmer फिर भी किसी initial choice पर commit करता है
दिलचस्प बात यह है कि अगर Ballmer commitment scheme इस्तेमाल करे, तो player यह verify कर सकता है [1]। उदाहरण के लिए game शुरू होने पर Ballmer 500 random bits बनाए, उसमें 1~100 range में चुना हुआ number जोड़े, फिर result को hash करके वह hash भेज दे। game खत्म होने पर वह 500 random bits भेजे, और player अब publicly revealed चुने हुए number और उन bits को concatenate करके hash करे और देखे कि शुरुआत में भेजा hash वही आता है या नहीं। अगर Ballmer झूठ बोलकर number बदलना चाहे, तो उसे किसी दूसरे number के साथ concatenate करने पर भी वही original hash देने वाले 500 bits ढूंढने होंगे, जो मुश्किल है
[1]: https://en.wikipedia.org/wiki/Commitment_scheme
इसे HATERIS के creator ने बनाया है, जो Tetris का ऐसा variant है जो हमेशा सबसे खराब block देता है
Edit: आह, नहीं। यह comment गलत है। ध्यान दिलाने के लिए fgna का धन्यवाद
मुझे लगता है adversarial Ballmer को हराने का एक और simple proof है। random Ballmer के खिलाफ binary search जितना ही expected result मिलता है
मेरे algorithm का नाम “random offset binary search” है। तरीका यह है
offsetकहेंoffsetजोड़ें और 100 से divide करने पर remainder इस्तेमाल करेंबस। अब Ballmer को यह strategy पता हो तब भी वह कोई खास number चुनकर performance को और खराब नहीं कर सकता। इसलिए expected result अभी भी प्रति game $0.20 है, और लेख में सुझाई गई strategy से बेहतर है
Ballmer जिन बहुत सी बातों में गलत था, यह भी शायद उन्हीं में से एक है
दोस्तों, यही वह perfect example है जो दिखाता है कि modern technical interview process pure madness क्यों है
Ballmer का सवाल, जिस answer complexity की उसने उम्मीद की होगी उसे देखते हुए, fair लगता है
candidate शायद mathematically गलत answer देगा, लेकिन process में अपनी thinking दिखाएगा और computer science principles भी थोड़ा demonstrate करेगा
Ballmer का career लंबा रहा है, यह ध्यान रखना चाहिए। अगर उसने यह सवाल सच में पूछा था, तो शायद 80s में पूछा होगा, और उस समय कोई भी लेख में बताए गए complex solution की उम्मीद नहीं करता
सही answer देना बड़ी बात होती और तुरंत hire करने लायक signal होता। लेकिन यह सवाल fundamentally broken नहीं लगता। bet करना हो या न करना हो, किसी भी answer को अच्छे से justify करना पड़ेगा
सामान्य तौर पर हर interviewer के साथ discussion होता है, और सिर्फ “candidate ने problem solve की या नहीं” नहीं देखा जाता। personally मुझे कई Big Tech interview problems बेवकूफी भरी लगती हैं, लेकिन दोनों sides से experience के बाद मुझे process उतना broken नहीं लगता जितना लोग सोचते हैं
इस case में बस यह दिखाना है कि आप binary search के बारे में reason कर सकते हैं, और average profit $0.20 है यह दिखा सकते हैं
फिर भी इसकी बदौलत https://aphyr.com/posts/340-reversing-the-technical-intervie... और उसके sequels जैसी अच्छी fiction मिलती है
पूरे गेम के numerical solution सहित Nash equilibrium का अधिक व्यापक विश्लेषण https://bowaggoner.com/blahg/2024/09-06-adversarial-binary-s... पर है
Steve Ballmer की net worth 120 अरब डॉलर है, इसलिए अगर एक गेम में 30 सेकंड लगते हैं, तो सब कुछ जीतने में 16 लाख साल लगेंगे
Little Mathematics Library – Elements of Game Theory: https://mirtitles.org/2012/09/06/little-mathematics-library-...
गेम थ्योरी की mixed strategies पर यह बहुत अच्छी किताब है
किताब में दिए गए motivating examples भी बेहतरीन हैं
“दो कार्ड हैं: एक Ace और एक 2। खिलाड़ी A इनमें से एक को random तरीके से निकालता है, और B यह नहीं देख पाता कि कौन-सा कार्ड निकला। अगर A ने Ace निकाला है, तो वह कहता है ‘मेरे पास Ace है’ और सामने वाले से 1 डॉलर मांगता है। अगर A ने 2 निकाला है, तो वह या तो (A1) ‘मेरे पास Ace है’ कहकर सामने वाले से 1 डॉलर मांग सकता है, या (A2) मान सकता है कि उसके पास 2 है और सामने वाले को 1 डॉलर दे सकता है
अगर सामने वाला स्वेच्छा से 1 डॉलर पाता है, तो उसे स्वीकार करना ही होगा। लेकिन अगर उससे 1 डॉलर मांगा जाता है, तो वह या तो (B1) मान ले कि A के पास Ace है और 1 डॉलर दे, या (B2) जांच की मांग करे और देखे कि A की बात सच है या नहीं। अगर A के पास सचमुच Ace है, तो B को A को 2 डॉलर देने होंगे। इसके उलट, अगर A bluff कर रहा था और उसके पास 2 था, तो A, B को 2 डॉलर देगा
इस गेम का विश्लेषण करें और हर खिलाड़ी की optimal strategy और expected payoff निकालें”