यह चुनौती तेज कोड लिखना है जो एक कम्प्यूटेशनल रूप से कठिन अनंत राशि का प्रदर्शन कर सकता है।
इनपुट
एक n
से n
मैट्रिक्स P
पूर्णांक प्रविष्टियों से छोटे हैं साथ 100
निरपेक्ष मूल्य में। परीक्षण करते समय मैं आपके कोड को किसी भी समझदार प्रारूप में आपके कोड को इनपुट प्रदान करने में प्रसन्न हूं। डिफ़ॉल्ट मैट्रिक्स की एक पंक्ति प्रति पंक्ति होगी, अंतरिक्ष को अलग किया जाएगा और मानक इनपुट पर प्रदान किया जाएगा।
P
हो जाएगा सकारात्मक निश्चित अर्थ है जो यह हमेशा सममित हो जाएगा। इसके अलावा, आपको वास्तव में यह जानने की जरूरत नहीं है कि चुनौती का जवाब देने के लिए सकारात्मक परिभाषा का क्या मतलब है। हालांकि इसका मतलब यह है कि वास्तव में नीचे परिभाषित राशि का जवाब होगा।
हालांकि आपको यह जानना होगा कि मैट्रिक्स-वेक्टर उत्पाद क्या है।
उत्पादन
आपके कोड को अनंत राशि की गणना करनी चाहिए:
सही उत्तर के प्लस या माइनस 0.0001 के भीतर। यहाँ Z
पूर्णांकों का सेट है और इतने Z^n
के साथ सभी संभव वैक्टर है n
पूर्णांक तत्वों और e
है प्रसिद्ध गणितीय स्थिरांक है कि लगभग २.७१८२८ बराबर होती है। ध्यान दें कि घातांक में मान बस एक संख्या है। एक स्पष्ट उदाहरण के लिए नीचे देखें।
यह रीमैन थीटा फ़ंक्शन से कैसे संबंधित है?
इस पेपर की संकेतन में हम रीमैन थीटा फ़ंक्शन की गणना करने की कोशिश कर रहे हैं । हमारी समस्या कम से कम दो कारणों से एक विशेष मामला है।
- हमने प्रारंभिक पैरामीटर
z
को लिंक किए गए पेपर में 0 पर सेट किया है। - हम मैट्रिक्स
P
को इस तरह से बनाते हैं कि एक eigenvalue का न्यूनतम आकार होता है1
। (मैट्रिक्स कैसे बनाया जाता है, इसके लिए नीचे देखें।)
उदाहरण
P = [[ 5., 2., 0., 0.],
[ 2., 5., 2., -2.],
[ 0., 2., 5., 0.],
[ 0., -2., 0., 5.]]
Output: 1.07551411208
अधिक विस्तार से, हमें इस P के लिए राशि में सिर्फ एक शब्द दिखाई देता है। उदाहरण के लिए योग में केवल एक पद लें:
और x^T P x = 30
। जो सूचना दी गई है e^(-30)
, उसके बारे 10^(-14)
में दी गई सहिष्णुता का सही उत्तर पाने के लिए महत्वपूर्ण होने की संभावना नहीं है। याद रखें कि अनंत योग वास्तव में लंबाई 4 के हर संभव वेक्टर का उपयोग करेगा जहां तत्व पूर्णांक हैं। मैंने केवल एक स्पष्ट उदाहरण दिया।
P = [[ 5., 2., 2., 2.],
[ 2., 5., 4., 4.],
[ 2., 4., 5., 4.],
[ 2., 4., 4., 5.]]
Output = 1.91841190706
P = [[ 6., -3., 3., -3., 3.],
[-3., 6., -5., 5., -5.],
[ 3., -5., 6., -5., 5.],
[-3., 5., -5., 6., -5.],
[ 3., -5., 5., -5., 6.]]
Output = 2.87091065342
P = [[6., -1., -3., 1., 3., -1., -3., 1., 3.],
[-1., 6., -1., -5., 1., 5., -1., -5., 1.],
[-3., -1., 6., 1., -5., -1., 5., 1., -5.],
[1., -5., 1., 6., -1., -5., 1., 5., -1.],
[3., 1., -5., -1., 6., 1., -5., -1., 5.],
[-1., 5., -1., -5., 1., 6., -1., -5., 1.],
[-3., -1., 5., 1., -5., -1., 6., 1., -5.],
[1., -5., 1., 5., -1., -5., 1., 6., -1.],
[3., 1., -5., -1., 5., 1., -5., -1., 6.]]
Output: 8.1443647932
P = [[ 7., 2., 0., 0., 6., 2., 0., 0., 6.],
[ 2., 7., 0., 0., 2., 6., 0., 0., 2.],
[ 0., 0., 7., -2., 0., 0., 6., -2., 0.],
[ 0., 0., -2., 7., 0., 0., -2., 6., 0.],
[ 6., 2., 0., 0., 7., 2., 0., 0., 6.],
[ 2., 6., 0., 0., 2., 7., 0., 0., 2.],
[ 0., 0., 6., -2., 0., 0., 7., -2., 0.],
[ 0., 0., -2., 6., 0., 0., -2., 7., 0.],
[ 6., 2., 0., 0., 6., 2., 0., 0., 7.]]
Output = 3.80639191181
स्कोर
मैं आपके कोड को आकार के बेतरतीब ढंग से चुने गए मैट्रिसेस पी पर परीक्षण करूँगा।
आपका स्कोर केवल सबसे बड़ा है n
, जिसके लिए मुझे 30 सेकंड से भी कम समय में एक सही उत्तर मिलता है, जब P
उस आकार के बेतरतीब ढंग से चुने गए मैट्रिस के साथ 5 से अधिक रन औसत होते हैं।
एक टाई के बारे में क्या?
यदि कोई टाई है, तो विजेता वह होगा जिसका कोड सबसे तेजी से औसतन 5 रन से अधिक होगा। इस घटना में कि वे समय भी बराबर हैं, विजेता पहला जवाब है।
यादृच्छिक इनपुट कैसे बनाया जाएगा?
- M <= n और एंट्री के साथ n मैट्रिक्स से M को एक यादृच्छिक m होने दें और जो -1 या 1. पायथन / संख्या में हैं
M = np.random.choice([0,1], size = (m,n))*2-1
। व्यवहार में मैं इसकेm
बारे में होना चाहूंगाn/2
। - आइये P पहचान चिन्ह + M ^ T M. In Python / numpy हो
P =np.identity(n)+np.dot(M.T,M)
। अब हमें गारंटी दी गई है किP
सकारात्मक निश्चितता है और प्रविष्टियां एक उपयुक्त सीमा में हैं।
ध्यान दें कि इसका मतलब है कि पी के सभी eigenvalues कम से कम 1 हैं, जिससे समस्या को रीमैन थीटा फ़ंक्शन को अनुमानित करने की सामान्य समस्या की तुलना में संभावित रूप से आसान हो जाता है।
भाषा और पुस्तकालय
आप अपनी पसंद की किसी भी भाषा या लाइब्रेरी का उपयोग कर सकते हैं। हालाँकि, स्कोरिंग के प्रयोजनों के लिए, मैं आपके कोड को अपनी मशीन पर चलाऊंगा ताकि कृपया इसे उबंटू पर चलाने के लिए स्पष्ट निर्देश प्रदान करें।
माई मशीन द टाइमिंग मेरी मशीन पर चलाई जाएगी। यह एक 8 जीबी एएमडी एफएक्स -8350 ईट-कोर प्रोसेसर पर एक मानक उबंटू स्थापित है। इसका मतलब यह भी है कि मुझे आपका कोड चलाने में सक्षम होना चाहिए।
उत्तर देना
n = 47
में सी ++ टन Hospel द्वाराn = 8
माल्टीसेन द्वारा पायथन में
x
की [-1,0,2,1]
। क्या आप इसे विस्तार से बताएंगे? (संकेत: मैं गणित गुरु नहीं हूं)