जो तेजी से गणना की जाती है,


10

जिसे तेजी से गणना की जाती है, या या ? , और , साथ सकारात्मक वास्तविक हैं ।लॉग इन करें एकb ablogac abcb>cbabcb>1

तुलना में आप किस प्रकार के एल्गोरिदम का उपयोग करेंगे? उनकी जटिलताएं क्या हैं?

उदाहरण के लिए, जब याएक cabcab

यह सवाल गणित स्टैक एक्सचेंज प्रश्न पर टिप्पणियों से प्रेरित था । स्टर्लिंग के एक तथ्य के सन्निकटन का उद्देश्य क्या है? । विशेष रूप से, उन टिप्पणियों को mjqxxxx , थॉमस एंड्रयूज और मेरे द्वारा छोड़ दिया गया ।


मध्यस्थ भी, जाहिरा तौर पर संपादन को मंजूरी दे सकते हैं। मैं @ MarkBooth के सुझाव से सहमत हूं और उन्होंने इस प्रश्न के रूप में इसे शामिल किया है।
एरन अहमदिया

बेझिझक टिप्पणी करें (हटाएं) अब वे अपना उद्देश्य पूरा कर चुके हैं। * 8 ')
मार्क बूथ

जवाबों:


8

कुछ संबंधित मुद्दों के लिए इस सवाल का मेरा जवाब देखें ।

सामान्य तौर पर, कंप्यूटर केवल जोड़, घटाना, गुणा, भाग और बिट शिफ्ट कर सकते हैं। तर्क के लिए, मान लें कि आप उस विशेष मामले में गणना नहीं कर रहे हैं जहां 2 की शक्ति है और एक प्राकृतिक संख्या है, क्योंकि यह मामला थोड़ा बदलाव की ओर कम हो जाता है, और इसलिए यह आसान है। a babab

यदि एक प्राकृतिक संख्या है, और आप गणना करना चाहते हैं , तो आप जोड़-श्रृंखला घातांक का उपयोग कर सकते हैं । आपके प्रश्न का हर दूसरा मामला कठिन है (सामान्य रूप से)।a bbab

उच्च सटीकता के लिए इन कार्यों को अनुमानित करने के लिए उपयोग किए जाने वाले कुछ तेज़ एल्गोरिदम को काले जादू की आवश्यकता होती है। "ब्लैक मैजिक" से मेरा क्या मतलब है, यह देखने के लिए मार्टिन एंकरल के इस ब्लॉग पोस्ट पर एक नज़र डालें और एक संबद्ध पेपर जिसे उन्होंने न्यूरल कम्प्यूटेशन में लिंक किया है । इसके अलावा CORDIC एल्गोरिथ्म देखें ।

इसी तरह के बिट-फ्लिपिंग ट्रिक्स को हैकर डिलाइट में समझाया गया है (लिंक पुस्तक के लिए साथी वेबसाइट पर है)।

अच्छे अनुमानों की गणना करने के अन्य तरीके संख्यात्मक विश्लेषण का उपयोग करते हैं (विकिपीडिया लेख पर अनुमोदन सिद्धांत देखें )। ऐसा करने का एक बुरा तरीका एक उपयुक्त अंतर समीकरण को रिग करना है और एक संख्यात्मक विधि का उपयोग करके इसे एकीकृत करना है जैसे कि यूलर की विधि (जैसे मैंने कहा, एक बुरा सन्निकटन, लेकिन आप इसे कर सकते हैं)। यह करने के लिए एक बेहतर तरीका श्रृंखला सन्निकटन का उपयोग करना है। टेलर सीरीज़ बहुत धीरे-धीरे परिवर्तित होती है, इसलिए पैडे सन्निकट या कुछ अन्य प्रकार की तेज़-अभिसरण श्रृंखला सन्निकटन का उपयोग इसके बजाय किया जा सकता है (अन्य परिमेय सन्निकटन, चेबिशेव श्रंखला आदि)।

ऊपर दिए गए कार्यों को अनुमानित करने के लिए आप जिस एल्गोरिथ्म का उपयोग करते हैं, वह आपकी वास्तुकला, गति आवश्यकताओं और सटीकता आवश्यकताओं पर निर्भर करेगा।

जटिलताओं के बारे में बात करने के साथ समस्या यह है कि कोई भी एल्गोरिथ्म केवल आपके द्वारा उल्लिखित कार्यों के एक अस्थायी बिंदु सन्निकटन की गणना करने वाला है, इसलिए रन समय निश्चित रूप से आपके सन्निकटन की मांग की सटीकता पर निर्भर करने वाला है। इस बात को ध्यान में रखते हुए, मुझे नहीं लगता कि कम्प्यूटेशनल जटिलता प्रदर्शन का एक अच्छा पहला अनुमान है; आपके इनपुट के आकार बिट्स में मापा जा रहा है जा (यानी, बिट्स की संख्या में यह प्रतिनिधित्व करने के लिए ले जाता है , , औरb cabc), जो कि संख्यात्मक इनपुट के परिमाण के आधार पर, बल्कि सटीक-निर्भर होने वाले हैं। व्यावहारिक उद्देश्यों के लिए, संख्याओं के संख्यात्मक प्रतिनिधित्व की शुद्धता बहुत भिन्न नहीं होती है (एकल परिशुद्धता, दोहरी परिशुद्धता, क्वाड सटीक), और आप आमतौर पर स्केलर फ़ंक्शंस के किसी भी कम्प्यूटेशनल जटिलता अनुमानों के आधार पर उस परिशुद्धता का उपयोग करने का निर्णय नहीं लेते हैं। । सबसे अधिक प्रासंगिक मीट्रिक दीवार-घड़ी का समय है, और जब तक आप एक विशेष वास्तुकला (एम्बेडेड सिस्टम) का उपयोग नहीं कर रहे हैं या आपका आवेदन वास्तव में तेजी से घातांक (ब्लॉग पोस्ट लिंक और ऊपर दिए गए तंत्रिका कम्प्यूटेशन लिंक देखें) की मांग करता है , आपकी समीक्षा में आंतरिक पुस्तकालय पसंद की भाषा शायद ठीक है।


4

यह एक अच्छा सवाल है क्योंकि संख्यात्मक एल्गोरिदम और प्रदर्शन को समझना एक प्रभावी कम्प्यूटेशनल वैज्ञानिक होने के लिए एक महत्वपूर्ण शर्त है। इसी समय, यह एक खराब सवाल है क्योंकि सामने आई बाधाओं को सार्थक जवाब देने के लिए पर्याप्त रूप से योग्य नहीं माना जाता है ।

तीन संगणना का प्रदर्शन अंतिम परिणाम में आवश्यक सटीकता पर निर्भर करेगा और साथ ही साथ ऑपरेंड का प्रतिनिधित्व करने के लिए आवश्यक न्यूनतम सटीकता भी होगा। आप सकारात्मक वास्तविक संख्याओं के रूप में , b और c को अर्हता प्राप्त करते हैं , लेकिन हमें यह जानना भी आवश्यक है कि कितने बाइनरी अंक d n का सही प्रतिनिधित्व करने के लिए आवश्यक हैं। सामान्य वास्तविक संख्याओं के लिए प्रदर्शन के विचारों को समझने के लिए, हमें पहले यह समझने की आवश्यकता है कि कंप्यूटर पूर्णांक का प्रतिनिधित्व कैसे करते हैं और साथ ही यह कैसे फ़्लोटिंग-पॉइंट संख्याओं का उपयोग करके वास्तविक संख्याओं का अनुमान लगाते हैं।abcdn

जब कंप्यूटर एक पूर्णांक पर काम करते हैं , तो आवश्यक द्विआधारी अंकों की संख्या स्पष्ट रूप से पूर्णांक के परिमाण के लॉग 2 के बराबर होती है , साथ ही हस्ताक्षर को संभालने के लिए एक अतिरिक्त बिट:M2

लॉग 2 | एम | + 1dn=2|M|+1

उदाहरण के लिए, संख्या -8 को 4 बाइनरी अंकों के साथ दर्शाया जा सकता है। प्रदर्शन और अंतरिक्ष-दक्षता के लिए, आधुनिक तर्क इकाइयों पर पूर्णांक के संख्यात्मक अभिकलन के लिए जिम्मेदार अंकगणितीय तर्क इकाइयाँ (ALU), कुछ निश्चित आकार तक पूर्णांकों पर गणित को संभालने के लिए डिज़ाइन की गई हैं, इन दिनों सबसे आम है d - 32 और d = 64। आपके कंप्यूटर में जैसे x86 प्रोसेसर ही नहीं ALU हैं, वे आज के इलेक्ट्रॉनिक समाज में सर्वव्यापी कंप्यूटर आर्किटेक्चर के एक मौलिक निर्माण खंड हैं। यदि आप वीडियो गेम कंसोल से परिचित हैं, तो आप निंटेंडो 64 को याद कर सकते हैं, आकार (बिट्स) के नाम पर एक वीडियो गेम सिस्टम, कंसोल के प्रोसेसर पर अंकगणितीय तर्क इकाइयां संभाल करने के लिए डिज़ाइन की गई थीं।

अंकगणित तर्क इकाइयों पर पूर्णांक जोड़, घटाव और गुणा बहुत कुशल हैं, और आमतौर पर गणना करने के लिए कई चक्रों से अधिक की आवश्यकता नहीं होती है। विभाजन कम निष्पादन वाले हैं, और आधुनिक प्रोसेसर पर कई दर्जन चक्रों की आवश्यकता हो सकती है। प्रदर्शन प्रसंस्करण इकाई (और अंकगणितीय तर्क इकाई के इसी कार्यान्वयन) की वास्तुकला और इसकी आवृत्ति दोनों पर निर्भर करता है। ध्यान दें कि एक 64-बिट प्रोसेसर आमतौर पर 1 और 64 के बीच कहीं भी x के लिए एक ही गति पर -bit ऑपरेंड पर अंकगणित कर सकता है ।xx

सामान्य कंप्यूटिंग में, और विशेष रूप से वैज्ञानिक कंप्यूटिंग में, पूर्णांक गणित कई संगणनाओं के लिए अस्पष्ट है, और संख्याओं के एक और प्रतिनिधित्व की आवश्यकता है, तथाकथित 'फ़्लोटिंग-पॉइंट' प्रतिनिधित्व। फ्लोटिंग प्वाइंट संख्या जिस तरह से आधुनिक माइक्रोप्रोसेसरों काम के बीच एक समझौता (में चारों ओर डेटा कार्टिंग प्रतिनिधित्व करते हैं -बिट जिसे) और, छोटा कर दिया वैज्ञानिक अंकन में प्रोसेसर पर संख्या का प्रतिनिधित्व एक निश्चित आधार का उपयोग करके गणना की जरूरतों (आमतौर पर = 2 या = 10 ) और दो पूर्णांकों, एक अपूर्णांश (कुछ हलकों में significand) का उपयोग कर संख्या का प्रतिनिधित्व है , और एक प्रतिपादक । एक दिया गया संख्या xnbb=2b=10sex तब लगभग इसका प्रतिनिधित्व किया जाता है:

x=sbe

मैं लगभग कहता हूं क्योंकि यह स्पष्ट होना चाहिए कि 1 जैसे तर्कसंगत तर्क भी को मानक ठिकानों के लिए फ्लोटिंग-पॉइंट नंबर के रूप में बिल्कुल नहीं दिखाया जा सकता है। महत्व के लिए प्रतिबद्ध अंकों की संख्या, संख्या की सटीकता को निर्धारित करती है, जो कि इसकी स्वयं की परिमाण के सापेक्ष है। आईईईई 754 मानकनिर्दिष्ट करती है कि फ्लोटिंग प्वाइंट संख्या उम्मीद कर रहे हैं के लिए नियमों का एक नंबर व्यवहार करने के लिए, (और इसी रेंज और सटीक) significand और अपूर्णांश की सीमाओं सहित कई महत्वपूर्ण मूल्यों के लिएn, तो संख्यात्मक गणनाओं के भीतर दोहराने योग्य हैं कि कुछ सहिष्णुता। फ्लोटिंग-पॉइंट नंबरों के काम में काफी सूक्ष्मता है, जो इस उत्तर में कैप्चर करने की उम्मीद नहीं कर सकते हैं, एक अच्छे परिचय के लिए मैं"फ्लोटिंग-पॉइंट अंकगणित के बारे में क्या जानना चाहिए"13dn

पिछले 50 वर्षों में बौद्धिक प्रयासों की एक महत्वपूर्ण राशि को कुशलता से फ्लोटिंग-पॉइंट ऑपरेशंस की गणना करने के लिए प्रोसेसर क्षमता में सुधार करने में निवेश किया गया है। आधुनिक प्रोसेसर पर, इन संगणनाओं को एक या अधिक फ्लोटिंग-पॉइंट इकाइयों (FPUs) द्वारा नियंत्रित किया जाता है, जो अंकगणित तर्क इकाई का एक अधिक परिष्कृत संस्करण है जो फ्लोटिंग-पॉइंट नंबरों पर अंकगणितीय संचालन करने के लिए डिज़ाइन किया गया है और आमतौर पर IEEE 754-निर्दिष्ट 32 को संभालने के लिए डिज़ाइन किया गया है -बिट फ़्लोटिंग-पॉइंट नंबर (अक्सर 'फ़्लोट्स' के रूप में संदर्भित) और 64-बिट फ़्लोटिंग-पॉइंट नंबर (अक्सर 'डबल्स' के रूप में संदर्भित) कुशलता से। अंकगणितीय तर्क इकाइयों के समान, फ़्लोटिंग-पॉइंट इकाइयाँ अक्सर कुछ चक्रों में जोड़, घटाव और गुणन की गणना कर सकती हैं, जबकि आमतौर पर विभाजन की आवश्यकता थोड़ी अधिक होती है।

ज्यादातर मामलों में, IEEE 754 64-बिट फ्लोटिंग-पॉइंट 'डबल्स' संख्यात्मक अभिकलन के लिए पर्याप्त हैं, तो आइए मान लेते हैं कि , b , और c प्रत्येक 64-बिट डबल्स के रूप में दर्शाए गए हैं, और आप प्रदर्शन में रुचि रखते हैं एक Intel नेहेल्म आर्किटेक्चर पर स्केलर ऑपरेशन के रूप में तीन संगणनाएँ x87 फ्लोटिंग-पॉइंट इंस्ट्रक्शन सब्मिट का उपयोग करते हुए, यानी आप इन ऑपरेशन को लूप के लिए या डेटा की श्रेणी में गणना करने में रुचि नहीं रखते हैं, और आप वेक्टर एक्सटेंशन का उपयोग नहीं करना चाहते हैं । निर्देश विलंबता जानकारी Agner Fog के इंटेल / AMD आर्किटेक्चर के लिए निर्देश संदर्भ तालिकाओं के उत्कृष्ट सेट से एकत्र की गई है ।abc

  1. ab
  2. लॉग इन a cac
  3. c1b

1 सामान्य घातांक को अक्सर निम्नलिखित पहचान के साथ लागू किया जाता है:

ab=βalogβb

β2eβ=2abt=alog2b2t

FYL2X + F2XM1 + ~ 20 = 80 + 51 + ~ 20 = ~ 151 चक्र

2 यह आधार पहचान के परिवर्तन के आधार पर दो लघुगणक और एक विभाजन में परिवर्तित किया जा सकता है और सटीक परिणाम के लिए इसे पुन: व्यवस्थित करने की आवश्यकता नहीं है।

2 * FYL2X + FDIV = 2 * 80 + (7 से 27) = 167 से 187 चक्र

[३] यह एक विभाजन के बाद होता है जिसके बाद एक घातांक होता है, इसलिए [१] प्लस FDIV, ~ १ c५ चक्र।


0

मुझे देखने दो कि क्या मैं इस प्रश्न को स्पष्ट कर सकता हूँ:

abloga(c)a

उत्तर : यह वास्तव में इस बात पर निर्भर करता है कि c की किसी पर निर्भरता है या नहीं, और b की तुलना कैसे की जाती है (इससे अधिक, इससे कम या बराबर)।

cba

cloga(c)=ln(c)/ln(a)loga(c)abaab=ω(loga(c))

c=abloga(ab)=bbabloga(c)ab=ω(loga(c))

cababc=Θ(ab)

loga(c)c1/b

abc

cc1/bbc1/b=o(loga(c))

c=abloga(c)=ac1/b=aloga(c)=Θ(c1/b)

cababc

c1/bab

cc1/babc1/b=o(ab)

c=abc1/b=ab>1abc1/b

abc


मैं अपनी टिप्पणियों को दो भागों में विभाजित करूँगा: शैलीगत, और सामग्री। दृढ़ता से, मैं सराहना करता हूं कि आपने अपनी पोस्ट में समीकरणों को शामिल किया है। कृपया उन्हें MathJax का उपयोग करने के लिए पुन: स्वरूपित करें ताकि वे अच्छी तरह से प्रस्तुत करें (उदाहरण के लिए, पोस्ट किए गए प्रश्न में)। MathJax का लाभ उठाने के लिए, अपने समीकरण लिखते समय LaTeX नोटेशन का उपयोग करें। LaTeX में गणित लिखने के लिए एक प्राइमर के लिए, विकीबूक में इस गाइड को देखें , या अमेरिकन गणितीय सोसायटी द्वारा यह लघु गाइड
ज्योफ ऑक्सबेरी

ablogca
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.