पूर्वगणना

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

डेटाबेस में, भौतिककरण शब्द का उपयोग पूर्व-गणना के परिणामों को संग्रहीत करने के लिए किया जाता है, जैसे भौतिक दृष्टि से।

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

इतिहास
कंप्यूटर के आगमन से पहले, लोगों द्वारा जटिल कार्यों की गणना को गति देने के लिए मूल्यों की मुद्रित लुकअप टेबल का उपयोग किया जाता था, जैसे कि त्रिकोणमितीय तालिकाओं, सामान्य लघुगणक और सांख्यिकीय घनत्व कार्यों की तालिकाएँ। स्कूली बच्चों को अक्सर सबसे अधिक इस्तेमाल की जाने वाली संख्याओं (9 x 9 या 12 x 12 तक) की गणना से बचने के लिए समय सरणी याद करना सिखाया जाता है। यहां तक ​​कि 493 ईस्वी पूर्व में, एक्विटेन के विक्टोरियस ने एक 98-स्तंभ गुणन तालिका लिखी थी, जो (रोमन अंकों में) 2 से 50 गुना तक प्रत्येक संख्या का गुणनफल देती थी और पंक्तियाँ एक हजार से शुरू होने वाली संख्याओं की एक सूची थी, जो सैकड़ों से नीचे उतरती थी। एक सौ से, फिर दसियों से दस तक, फिर एक से एक तक, और फिर 1/144 तक भिन्न

उदाहरण
यहां तक ​​कि डिजिटल त्रिकोणमितीय कार्यों के आधुनिक कंप्यूटर कार्यान्वयन भी अक्सर प्रक्षेप एल्गोरिदम के लिए गुणांक प्रदान करने के लिए या क्रमिक सन्निकटन एल्गोरिदम को आरंभ करने के लिए पूर्व-गणना की गई लुकअप तालिकाओं का उपयोग करते हैं।

क्रिप्टोसिस्टम्स पर कई हमलों में प्रीकंप्यूटेशन शामिल है।

आधुनिक कुशल एल्गोरिदम के हिस्से के रूप में बड़े पैमाने पर प्रीकंप्यूटेशन के उदाहरणों में शामिल हैं:
 * इंद्रधनुष टेबल
 * बिल्कुल सही हैश
 * घन हमला
 * 3डी ग्राफिक्स में दृश्यता गणना के लिए पूर्व-परिकलित बीएसपी पेड़
 * रेडियोसिटी (3डी कंप्यूटर ग्राफिक्स) 3डी ग्राफिक्स में रोशनी के लिए प्रीकंप्यूटेशन

परिणामी कोड के रन-टाइम की गति को बढ़ाने के साधन के रूप में संकलक  बड़े पैमाने पर पूर्व-गणना का उपयोग करते हैं: इस पूर्व-गणना को प्रभावी रूप से प्रोग्राम कोड के आंशिक मूल्यांकन के रूप में माना जा सकता है। इस प्रकार के पूर्वगणना के उदाहरणों में डेटा प्रवाह विश्लेषण और शक्ति में कमी के चरण शामिल हैं।

यह भी देखें

 * गणितीय तालिका
 * एल्गोरिथम दक्षता
 * आंशिक मूल्यांकन
 * संस्मरण