कंप्यूटर बीजगणित

गणित और कंप्यूटर विज्ञान में, कंप्यूटर बीजगणित, जिसे प्रतीकात्मक गणना या बीजगणितीय गणना भी कहा जाता है, एक वैज्ञानिक क्षेत्र है जो गणितीय अभिव्यक्तियों और अन्य गणितीय वस्तुओं में हेरफेर करने के लिए एल्गोरिदम और सॉफ़्टवेयर के अध्ययन और विकास को संदर्भित करता है। यद्यपि कंप्यूटर बीजगणित को वैज्ञानिक कंप्यूटिंग का एक उप-क्षेत्र माना जा सकता है, उन्हें आम तौर पर अलग -अलग क्षेत्र के रूप में माना जाता है क्योंकि वैज्ञानिक कंप्यूटिंग आमतौर पर चल बिन्दु संख्या के साथ संख्यात्मक गणना पर आधारित होती है, जबकि सांकेतिक गणना उन चरों वाले अभिव्यक्तियों के साथ सटीक गणना पर जोर देती है जिनके पास कोई मूल्य नहीं है और प्रतीकों के रूप में हेरफेर किया जाता है।

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

कंप्यूटर बीजगणित का उपयोग व्यापक रूप से गणित में प्रयोग करने और उन सूत्रों को डिजाइन करने के लिए किया जाता है जो संख्यात्मक कार्यक्रमों में उपयोग किए जाते हैं। इसका उपयोग पूर्ण वैज्ञानिक संगणनाओं के लिए भी किया जाता है, जैसे कि सार्वजनिक कुंजी क्रिप्टोग्राफी या कुछ गैर-रैखिक समस्याओं में, जब विशुद्ध रूप से संख्यात्मक तरीके विफल होते हैं।

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

पूर्व में, प्रतीकात्मक अभिकलन, बीजगणितीय हेरफेर, प्रतीकात्मक प्रसंस्करण, प्रतीकात्मक गणित, या प्रतीकात्मक बीजगणित के रूप में भी संदर्भित किया गया है, लेकिन इन शब्दों का उपयोग अब कंप्यूटर बीजगणित के संदर्भ में नहीं किया जाता है।

वैज्ञानिक समुदाय
ऐसा कोई विद्वान समाज नहीं है जो कंप्यूटर बीजगणित के लिए विशिष्ट हो, लेकिन यह कार्य SIGSAM (प्रतीकात्मक और बीजगणितीय हेरफेर पर विशेष रुचि समूह) नामक कंप्यूटिंग मशीनरी के एसोसिएशन के विशेष रुचि समूह द्वारा ग्रहण किया जाता है।

कंप्यूटर बीजगणित पर कई वार्षिक सम्मेलन होते हैं, जिनमें प्रमुख ISSAC (प्रतीकात्मक और बीजगणितीय संगणना पर अंतर्राष्ट्रीय संगोष्ठी) है, जो नियमित रूप से SIGSAM द्वारा प्रायोजित है।

यहां कंप्यूटर बीजगणित में विशेषज्ञता वाली कई पत्रिकाएँ हैं, जिनमें से शीर्ष एक जर्नल ऑफ़ सिम्बोलिक कंप्यूटेशन है जिसकी स्थापना 1985 में ब्रूनो बुचबर्गर (Bruno Buchberge) ने की थी। कई अन्य पत्रिकाएँ भी हैं जो नियमित रूप से कंप्यूटर बीजगणित में लेख प्रकाशित करती हैं।

डेटा प्रतिनिधित्व
जैसा कि संख्यात्मक सॉफ्टवेयर लगभग संख्यात्मक अभिकलन के लिए अत्यधिक कुशल है, कंप्यूटर बीजगणित में, ठीक-ठीक प्रतिनिधित्व किए गए डेटा के साथ सटीक गणना पर जोर देना आम है। इस तरह के एक सटीक प्रतिनिधित्व का तात्पर्य है कि, भले ही आउटपुट का आकार छोटा हो, गणना के दौरान उत्पन्न मध्यवर्ती डेटा अप्रत्याशित तरीके से बढ़ सकता है। इस व्यवहार को अभिव्यक्ति कहा जाता है। इस समस्या को दूर करने के लिए, डेटा के प्रतिनिधित्व के साथ-साथ उन्हें हेरफेर करने वाले एल्गोरिदम में विभिन्न तरीकों का उपयोग किया जाता है।

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

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

अंकगणितीय संक्रियाओं के कुशल कार्यान्वयन की प्रोग्रामिंग करना एक कठिन कार्य है। इसलिए, अधिकांश मुफ्त कंप्यूटर बीजगणित प्रणाली और कुछ व्यावसायिक जैसे गणित और मेपल (Maple) (सॉफ्टवेयर), GMP पुस्तकालय का उपयोग करते हैं, जो इस प्रकार एक वास्तविक मानक है।

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

यहां तक कि कार्यक्रमों को भी प्रचालक के साथ अभिव्यक्तियों के रूप में माना जा सकता है और प्रदर्शित किया जा सकता है और कम से कम दो संकार्य, मापदंडों की सूची और समूह, जो स्वयं एक ऑपरेटर के रूप में ‘समूह’ के साथ एक अभिव्यक्ति है और संकार्य के रूप में निर्देशों का एक अनुक्रम है। इसके विपरीत, किसी भी गणितीय अभिव्यक्ति को एक कार्यक्रम के रूप में देखा जा सकता है।उदाहरण के लिए, “a + b ” अभिव्यक्‍ति को इसके अतिरिक्‍त कार्यक्रम के रूप में देखा जा सकता है, जिसमें a और b पैरामीटर हैं ।इस कार्यक्रम को निष्पादित करने में दिए गए मानों के लिए अभिव्यक्ति का मूल्यांकन करना शामिल है a और b; यदि उनके पास कोई मूल्य नहीं है - यानी वे अनिश्चित हैं - मूल्यांकन का परिणाम केवल इसका इनपुट है।

विलंबित मूल्यांकन की यह प्रक्रिया कंप्यूटर बीजगणित में मौलिक है। उदाहरण के लिए, समीकरणों का संचालिका "=" भी, अधिकांश कंप्यूटर बीजगणित प्रणालियों में, समानता परीक्षण के कार्यक्रम का नाम होता है: आम तौर पर, समीकरण का मूल्यांकन एक समीकरण में परिणत होता है, लेकिन, जब एक समानता परीक्षण की आवश्यकता होती है ,—या तो स्पष्ट रूप से उपयोगकर्ता द्वारा "बूलियन का मूल्यांकन" कमांड के माध्यम से पूछा जाता है, या प्रोग्राम के अंदर परीक्षण के मामले में सिस्टम द्वारा स्वचालित रूप से शुरू किया जाता है-फिर एक बूलियन 0 या 1 का मूल्यांकन निष्पादित किया जाता है।

चूंकि एक अभिव्यक्ति के ऑपरेंड्स का आकार अप्रत्याशित है और एक कार्य सत्र के दौरान बदल सकता है, इसलिए संकार्य के अनुक्रम को आमतौर पर या तो पॉइंटर्स (pointers) (जैसे मैकसिमा में) या हैश टेबल (जैसे मेपल में) में प्रविष्टियों के रूप में दर्शाया जाता है।

सरलीकरण
$f(x) = x⁄√x^{4} + 10x^{2} - 96x - 71$ के संबंध में विभेदीकरण के मूल नियमों का अपरिष्कृत अनुप्रयोग $$a^x$$ परिणाम देता है
 * $$ x\cdot a^{x-1}\cdot 0 + a^x\cdot \left (1\cdot \log a + x\cdot \frac{0}{a} \right).$$
 * इस तरह की जटिल अभिव्यक्ति स्पष्ट रूप से स्वीकार्य नहीं है, और जैसे ही कोई सामान्य अभिव्यक्तियों के साथ काम करता है, सरलीकरण की प्रक्रिया की आवश्यकता होती है।

यह सरलीकरण आम तौर पर पुनर्लेखन नियमों के माध्यम से किया जाता है। पुनर्लेखन नियमों के कई वर्गों पर विचार किया जाना है। सरलतम रूप में पुनर्लेखन नियमों में शामिल हैं जो हमेशा अभिव्यक्ति के आकार को कम करते हैं, जैसे कि $x$ या $E &minus; E → 0$। वे कंप्यूटर बीजगणित प्रणालियों में व्यवस्थित रूप से लागू होते हैं।

पहली समस्या जोड़ और गुणन जैसे सहयोगी संचालन के साथ होती है। सहयोगीता से निपटने का मानक तरीका यह है कि जोड़ और गुणन में एक मनमानी संख्या जो कि है $sin(0) → 0$ को $a + b + c$ के रूप में दर्शाया गया है। इस प्रकार $"+"(a, b, c)$ तथा $a + (b + c)$ दोनों को $(a + b) + c$ के लिए सरलीकृत किया जाता है जो कि $"+"(a, b, c)$ प्रदर्शित होता है।  $a + b + c$ के बारे में क्या? इस समस्या से निपटने के लिए, सबसे सरल तरीका व्यवस्थित रूप से $a &minus; b + c$, $&minus;E$, $E &minus; F$ क्रमशः, $E/F$, $(&minus;1)⋅E$, $E + (&minus;1)⋅F$ के रूप में फिर से लिखना। दूसरे शब्दों में, अभिव्यक्ति के आंतरिक प्रतिनिधित्व में, संख्याओं के प्रतिनिधित्व के बाहर कोई घटाव या विभाजन नहीं है।

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

कुछ पुनर्लेखन नियम कभी-कभी बढ़ते हैं और कभी-कभी उन अभिव्यक्तियों के आकार को कम करते हैं जिन पर उन्हें लागू किया जाता है। यह वितरण या त्रिकोणमिती पहचान का मामला है। उदाहरण के लिए, वितरण कानून फिर से लिखने की अनुमति देता है $$(x+1)^4 \rightarrow x^4+4x^3+6x^2+4x+1$$ तथा $$(x-1)(x^4+x^3+x^2+x+1) \rightarrow x^5-1.$$ चूंकि इस तरह के एक पुनर्लेखन नियम को लागू करने या न करने का एक अच्छा सामान्य विकल्प बनाने का कोई तरीका नहीं है, ऐसे पुनर्लेखन केवल तभी किए जाते हैं जब उपयोगकर्ता द्वारा स्पष्ट रूप से पूछा जाए। वितरण के लिए, इस पुनर्लेखन नियम को लागू करने वाले कंप्यूटर फ़ंक्शन को आमतौर पर विस्तार कहा जाता है। रिवर्स रिवाइटिंग नियम, जिसे "कारक" कहा जाता है, को एक नॉन-ट्रियल एल्गोरिथ्म की आवश्यकता होती है, जो इस प्रकार कंप्यूटर बीजगणित प्रणाली (polynomial factorization देखें) में एक प्रमुख कार्य है।

गणितीय पहलू
इस खंड में हम कुछ मौलिक गणितीय प्रश्नों पर विचार करते हैं जो कंप्यूटर में गणितीय अभिव्यक्तियों में हेरफेर करने के तुरंत बाद उत्पन्न होते हैं। हम मुख्य रूप से बहुभिन्नरूपी परिमेय भिन्नों के मामले पर विचार करते हैं। यह एक वास्तविक प्रतिबंध नहीं है, क्योंकि जैसे ही एक अभिव्यक्ति में दिखाई देने वाले अपरिमेय कार्यों को सरल किया जाता है, उन्हें आमतौर पर नए अनिश्चय के रूप में माना जाता है। उदाहरण के लिए,
 * $$(\sin(x+y)^2+ \log(z^2-5))^3$$ में एक बहुपद के रूप में देखा जाता है $$\sin(x+y)$$ तथा $$\log(z^2-5)$$

समानता
गणितीय अभिव्यक्तियों के लिए समानता की दो धारणाएं हैं। वाक्यात्मक समानता उन अभिव्यक्तियों की समानता है जिसका अर्थ है कि वे उसी तरह से लिखे गए हैं (या कंप्यूटर में प्रतिनिधित्व करते हैं)। साधारण होने के कारण, वाक्यात्मक समानता को शायद ही कभी गणितज्ञों द्वारा माना जाता है, हालांकि यह एकमात्र समानता है जो एक कार्यक्रम के साथ परीक्षण करना आसान है। अर्थ समानता तब है जब दो अभिव्यक्ति एक ही गणितीय वस्तु का प्रतिनिधित्व करते हैं, जैसे में
 * $$ (x+y)^2=x^2+2xy+y^2.$$

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

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

सामान्य गणित के विपरीत, सामान्य रूप और सामान्य रूप कंप्यूटर बीजगणित के पर्याय नहीं हैं। एक विहित रूप ऐसा है कि विहित रूप में दो अभिव्यक्तियाँ शब्दार्थ रूप से समान हैं यदि और केवल यदि वे वाक्यात्मक रूप से समान हैं, जबकि एक सामान्य रूप ऐसा है कि सामान्य रूप में एक अभिव्यक्ति शब्दार्थ रूप से शून्य है, यदि यह वाक्यात्मक रूप से शून्य है। दूसरे शब्दों में, सामान्य रूप में अभिव्यक्तियों द्वारा शून्य का एक अद्वितीय प्रतिनिधित्व होता है।

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

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

यह भी देखें

 * स्वचालित प्रमेय समर्थक
 * कंप्यूटर-असिस्टेड प्रूफ
 * कम्प्यूटेशनल बीजीय ज्यामिति
 * कंप्यूटर बीजगणित प्रणाली
 * प्रूफ चेकर
 * मॉडल चेकर
 * प्रतीकात्मक-प्रतिष्ठित गणना
 * प्रतीकात्मक सिमुलेशन
 * प्रतीकात्मक कृत्रिम बुद्धिमत्ता

अग्रिम पठन
For a detailed definition of the subject: For textbooks devoted to the subject:
 * Symbolic Computation (An Editorial), Bruno Buchberger, Journal of Symbolic Computation (1985) 1, pp. 1–6.