EITC/IS/CCTF कम्प्युटेशनल कम्प्लेक्सिटी थ्योरी फन्डामेन्टल्स कम्प्युटर विज्ञानको आधारभूत पक्षहरूको सैद्धान्तिक पक्षहरूमा युरोपेली आईटी प्रमाणीकरण कार्यक्रम हो जुन इन्टरनेटमा व्यापक रूपमा प्रयोग हुने शास्त्रीय असिमेट्रिक सार्वजनिक-कुञ्जी क्रिप्टोग्राफीको आधार पनि हो।
EITC/IS/CCTF कम्प्युटेशनल कम्प्लेक्सिटी थ्योरी फन्डामेन्टल्सको पाठ्यक्रमले कम्प्युटर विज्ञानको आधारभूत सिद्धान्त र कम्प्युटेशनल मोडेलहरू जस्तै नियतात्मक र गैर-निर्धारित सीमित राज्य मेसिनहरू, नियमित भाषाहरू, सन्दर्भ मुक्त व्याकरणहरू र भाषा सिद्धान्तहरू, अटोमेटा सिद्धान्त, ट्युरिङ जस्ता आधारभूत अवधारणाहरूमा सैद्धान्तिक ज्ञान समेट्छ। मेशिनहरू, समस्याहरूको निर्णायकता, पुनरावृत्ति, तर्क र निम्न संरचना भित्र आधारभूत सुरक्षा अनुप्रयोगहरूको लागि एल्गोरिदमिक्सको जटिलता, व्यापक र संरचित EITCI प्रमाणीकरण पाठ्यक्रम आत्म-शिक्षा सामग्रीहरू समावेश गरी यो कमाउनको लागि तयारीको लागि आधारको रूपमा सन्दर्भ खुला-पहुँच भिडियो शिक्षात्मक सामग्रीद्वारा समर्थित। सम्बन्धित परीक्षा पास गरेर EITC प्रमाणीकरण।
एल्गोरिदमको कम्प्युटेसनल जटिलता भनेको यसलाई सञ्चालन गर्न आवश्यक पर्ने स्रोतहरूको मात्रा हो। समय र स्मृति स्रोत विशेष ध्यान दिइन्छ। समस्याको जटिलता यसलाई समाधान गर्नका लागि उत्तम एल्गोरिदमहरूको जटिलताको रूपमा परिभाषित गरिएको छ। एल्गोरिदमको विश्लेषण भनेको स्पष्ट रूपमा दिइएको एल्गोरिदमको जटिलताको अध्ययन हो, जबकि कम्प्युटेसनल जटिलता सिद्धान्त भनेको सबैभन्दा राम्रो ज्ञात एल्गोरिदमहरूको साथ समस्या समाधानहरूको जटिलताको अध्ययन हो। दुबै डोमेनहरू एक अर्कामा गाँसिएका छन् किनभने एल्गोरिदमको जटिलता सधैं समस्याको जटिलतामा माथिल्लो बाधा हो। यसबाहेक, कुशल एल्गोरिदमहरू निर्माण गर्दा समस्याको जटिलतासँग निश्चित एल्गोरिदमको जटिलतालाई तुलना गर्न आवश्यक छ। अधिकतर परिस्थितिहरूमा, समस्याको कठिनाईको बारेमा मात्र उपलब्ध जानकारी यो हो कि यो सबैभन्दा कुशल ज्ञात प्रविधिहरूको जटिलता भन्दा कम छ। नतिजाको रूपमा, एल्गोरिथ्म विश्लेषण र जटिलता सिद्धान्त बीच धेरै ओभरल्याप छ।
जटिलता सिद्धान्तले कम्प्युटर विज्ञानको आधारको रूपमा कम्प्युटेशनल मोडेलहरूको आधारमा मात्र नभई आधुनिक नेटवर्कहरूमा, विशेष गरी इन्टरनेटमा व्यापक रूपमा फैलिएको शास्त्रीय असिमेट्रिक क्रिप्टोग्राफी (तथाकथित पब्लिक-की क्रिप्टोग्राफी) को आधारहरूमा पनि महत्त्वपूर्ण भूमिका खेल्छ। सार्वजनिक-कुञ्जी इन्क्रिप्शन निश्चित असममित गणितीय समस्याहरूको कम्प्युटेशनल कठिनाइमा आधारित छ जस्तै उदाहरणका लागि ठूलो संख्याको कारककरण यसको प्रमुख कारकहरूमा (यो अपरेशन जटिलता सिद्धान्त वर्गीकरणमा एक कठिन समस्या हो, किनभने त्यहाँ समाधान गर्न कुशल शास्त्रीय एल्गोरिदमहरू छैनन्। यो समस्याको इनपुट साइजको बृद्धिको साथ घातीय रूपमा नभई बहुपदीय रूपमा संसाधनहरू मापन गर्दछ, जुन मूल ठूलो संख्या दिनको लागि ज्ञात प्राइम फ्याक्टरहरूमा गुणन गर्ने एकदम सरल रिभर्स अपरेशनको विपरित हो)। सार्वजनिक-कुञ्जी क्रिप्टोग्राफीको वास्तुकलामा यो असमानता प्रयोग गर्दै (सार्वजनिक कुञ्जी बीचको कम्प्युटेशनल असिमेट्रिक सम्बन्ध परिभाषित गरेर, जुन सजिलै निजी कुञ्जीबाट गणना गर्न सकिन्छ, जबकि निजी कुञ्जी सार्वजनिक कुञ्जीबाट सजिलै कम्प्युटर हुन सक्दैन, सार्वजनिक रूपमा। सार्वजनिक कुञ्जी घोषणा गर्नुहोस् र अन्य सञ्चार पक्षहरूलाई डेटाको असममित इन्क्रिप्शनको लागि प्रयोग गर्न सक्षम गर्नुहोस्, जुन त्यसपछि मात्र जोडिएको निजी कुञ्जीसँग डिक्रिप्ट गर्न सकिन्छ, तेस्रो पक्षहरूलाई कम्प्युटेशनल रूपमा उपलब्ध छैन, यसरी सञ्चारलाई सुरक्षित बनाउँछ)।
कम्प्यूटेशनल जटिलता सिद्धान्त मुख्यतया कम्प्युटर विज्ञान र एल्गोरिदमिक्स अग्रगामीहरूको उपलब्धिहरूमा विकसित गरिएको थियो, जस्तै एलन ट्युरिङ, जसको काम नाजी जर्मनीको एनिग्मा सिफर तोड्न महत्वपूर्ण थियो, जसले दोस्रो विश्व युद्ध जित्ने सहयोगीहरूमा गहिरो भूमिका खेलेको थियो। लुकेको जानकारीको पर्दाफास गर्नका लागि डाटा (मुख्यतया इन्क्रिप्टेड सञ्चार) को विश्लेषण गर्ने कम्प्युटेशनल प्रक्रियाहरू डिजाइन र स्वचालित गर्ने उद्देश्यले क्रिप्टोग्राफिक प्रणालीहरू तोड्न र इन्क्रिप्टेड सञ्चारका सामग्रीहरूमा पहुँच प्राप्त गर्न प्रयोग गरिएको थियो, सामान्यतया रणनीतिक सैन्य महत्त्वको। यो क्रिप्ट विश्लेषण पनि थियो जसले पहिलो आधुनिक कम्प्युटरहरूको विकासलाई उत्प्रेरित गर्यो (जुन सुरुमा कोडब्रेकिंगको रणनीतिक लक्ष्यमा लागू गरिएको थियो)। ब्रिटिश कोलोसस (पहिलो आधुनिक इलेक्ट्रोनिक र प्रोग्राम कम्प्युटरको रूपमा मानिन्छ) पहिले पोलिश "बम" द्वारा बनाइएको थियो, एक इलेक्ट्रोनिक कम्प्युटेशनल उपकरण मारियन रेजेव्स्की द्वारा एनिग्मा साइफरहरू तोड्न मद्दत गर्न डिजाइन गरिएको थियो, र पोलिश खुफिया द्वारा ग्रेट ब्रिटेनलाई हस्तान्तरण गरिएको थियो। सन् १९३९ मा जर्मनीले पोल्याण्डमाथि आक्रमण गरेपछि कब्जा गरिएको जर्मन एनिग्मा इन्क्रिप्शन मेसिन। यस यन्त्रको आधारमा एलन ट्युरिङले जर्मन इन्क्रिप्टेड सञ्चारलाई सफलतापूर्वक तोड्न आफ्नो थप उन्नत समकक्षको विकास गरे, जुन पछि आधुनिक कम्प्युटरहरूमा विकसित भएको छ।
किनभने एल्गोरिदम चलाउन आवश्यक स्रोतहरूको मात्रा इनपुटको आकारसँग भिन्न हुन्छ, जटिलता सामान्यतया प्रकार्य f(n) को रूपमा व्यक्त गरिन्छ, जहाँ n इनपुट साइज हो र f(n) या त सबैभन्दा खराब-केस जटिलता हो। आकार n को सबै इनपुटहरूमा आवश्यक स्रोतहरूको अधिकतम मात्रा) वा औसत-केस जटिलता (साइज n को सबै इनपुटहरूमा स्रोतहरूको मात्राको औसत)। साइज n को इनपुटमा आवश्यक प्राथमिक अपरेशनहरूको संख्यालाई सामान्यतया समय जटिलताको रूपमा भनिन्छ, जहाँ प्राथमिक सञ्चालनहरूले एक विशेष कम्प्युटरमा निरन्तर समय लिने विश्वास गरिन्छ र फरक मेसिनमा चलाउँदा स्थिर कारकद्वारा मात्र परिवर्तन हुन्छ। आकार n को इनपुटमा एल्गोरिदम द्वारा आवश्यक मेमोरीको मात्रालाई स्पेस जटिलता भनिन्छ।
समय सबैभन्दा सामान्य रूपमा मानिने स्रोत हो। जब "जटिलता" शब्द क्वालिफायर बिना प्रयोग गरिन्छ, यसले सामान्यतया समयको जटिलतालाई जनाउँछ।
समयको परम्परागत एकाइहरू (सेकेन्ड, मिनेट, र यस्तै) जटिलता सिद्धान्तमा नियोजित हुँदैनन् किनभने तिनीहरू छनौट गरिएको कम्प्युटर र प्रविधिको विकासमा धेरै निर्भर छन्। उदाहरण को लागी, एक कम्प्यूटरले आज 1960 को एक कम्प्यूटर भन्दा धेरै छिटो एक एल्गोरिथ्म कार्यान्वयन गर्न सक्छ, यद्यपि, यो एल्गोरिथ्म को एक अन्तर्निहित गुणस्तर को सट्टा कम्प्युटर हार्डवेयर मा प्राविधिक सफलता को कारण हो। जटिलता सिद्धान्तको लक्ष्य एल्गोरिदमको अन्तर्निहित समय आवश्यकताहरू, वा एल्गोरिदमले कुनै पनि कम्प्युटरमा लगाउने आधारभूत समय सीमाहरू परिमाण गर्न हो। यो गणनाको क्रममा कति आधारभूत कार्यहरू गरिन्छन् भनेर गणना गरेर पूरा हुन्छ। यी प्रक्रियाहरूलाई सामान्यतया चरणहरू भनिन्छ किनभने तिनीहरू एक विशेष मेसिनमा निरन्तर समय लिन मानिन्छ (अर्थात, तिनीहरू इनपुटको मात्राबाट अप्रभावित हुन्छन्)।
अर्को महत्त्वपूर्ण स्रोत एल्गोरिदमहरू प्रदर्शन गर्न आवश्यक कम्प्युटर मेमोरीको मात्रा हो।
अर्को प्रायः प्रयोग गरिएको स्रोत भनेको अंकगणितीय कार्यहरूको मात्रा हो। यस परिदृश्यमा, "अंकगणितीय जटिलता" शब्द प्रयोग गरिन्छ। समय जटिलता सामान्यतया एक स्थिर कारक द्वारा अंकगणित जटिलता को उत्पादन हो यदि एक गणना को समयमा हुने संख्या को बाइनरी प्रतिनिधित्व को आकार मा माथिल्लो बाधा थाहा छ।
गणनाको क्रममा प्रयोग गरिएका पूर्णाङ्कहरूको आकार धेरै विधिहरूमा सीमित छैन, र अंकगणितीय सञ्चालनहरूलाई निश्चित समय चाहिन्छ भन्ने मान्न अवास्तविक छ। नतिजाको रूपमा, समय जटिलता, जसलाई बिट जटिलता पनि भनिन्छ, अंकगणितीय जटिलता भन्दा उल्लेखनीय रूपमा उच्च हुन सक्छ। nn पूर्णांक म्याट्रिक्सको निर्धारक गणना गर्ने अंकगणितीय कठिनाई, उदाहरणका लागि, मानक प्रविधिहरू (गौसियन उन्मूलन) को लागि O(n^3) हो। किनभने गुणांकको साइज गणनाको क्रममा घातीय रूपमा विस्तार हुन सक्छ, उही विधिहरूको बिट जटिलता n मा घातीय छ। यदि यी प्रविधिहरू बहु-मोड्युलर अंकगणितसँग संयोजनमा प्रयोग गरिन्छ भने, बिट जटिलतालाई O(n^4) मा घटाउन सकिन्छ।
बिट जटिलता, औपचारिक सर्तहरूमा, एल्गोरिथ्म चलाउन आवश्यक बिटहरूमा सञ्चालनहरूको संख्यालाई बुझाउँछ। यो धेरै गणना प्रतिमान मा एक स्थिर कारक सम्म अस्थायी जटिलता बराबर छ। कम्प्युटरलाई आवश्यक मेसिन शब्दहरूमा अपरेशनहरूको संख्या बिट जटिलताको समानुपातिक हुन्छ। गणनाको यथार्थवादी मोडेलहरूको लागि, समय जटिलता र बिट जटिलता यसरी समान छन्।
स्रोत जुन प्राय: क्रमबद्ध र खोजीमा विचार गरिन्छ प्रविष्टिहरूको तुलनाको मात्रा हो। यदि डेटा राम्रोसँग व्यवस्थित गरिएको छ भने, यो समय जटिलताको राम्रो सूचक हो।
सबै सम्भावित इनपुटहरूमा, एल्गोरिदममा चरणहरूको संख्या गणना गर्न असम्भव छ। किनभने इनपुटको जटिलता यसको आकारसँगै बढ्छ, यसलाई सामान्यतया इनपुटको साइज n (बिटहरूमा) को प्रकार्यको रूपमा प्रतिनिधित्व गरिन्छ, र त्यसैले जटिलता n को प्रकार्य हो। समान आकारको इनपुटहरूको लागि, तथापि, एल्गोरिदमको जटिलता धेरै फरक हुन सक्छ। नतिजाको रूपमा, विभिन्न जटिलता कार्यहरू नियमित रूपमा कार्यरत छन्।
सबैभन्दा खराब-केस जटिलता सबै आकार n इनपुटहरूको लागि सबै जटिलताहरूको योग हो, जबकि औसत-केस जटिलता सबै आकार n इनपुटहरूको लागि सबै जटिलताको योग हो (यसले अर्थ दिन्छ, दिइएको आकारको सम्भावित इनपुटहरूको संख्याको रूपमा। सीमित)। जब "जटिलता" शब्दलाई थप परिभाषित नगरी प्रयोग गरिन्छ, सबैभन्दा खराब-केस समय जटिलतालाई ध्यानमा राखिन्छ।
सबैभन्दा खराब-केस र औसत-केस जटिलता कुख्यात रूपमा सही रूपमा गणना गर्न गाह्रो छ। यसबाहेक, यी सटीक मानहरूमा थोरै व्यावहारिक अनुप्रयोग छ किनभने मेसिन वा गणना प्रतिमानमा कुनै पनि परिवर्तनले जटिलतालाई थोरै फरक पार्छ। यसबाहेक, n को साना मानहरूको लागि संसाधन प्रयोग महत्त्वपूर्ण छैन, त्यसैले कार्यान्वयनको सहजता सानो n को लागी कम जटिलता भन्दा धेरै आकर्षक हुन्छ।
यी कारणहरूका लागि, उच्च n को लागि जटिलताको व्यवहारमा सबैभन्दा बढी ध्यान दिइन्छ, त्यो हो, यसको एसिम्प्टोटिक व्यवहार n अनन्ततामा पुग्दा। नतिजाको रूपमा, ठूलो O संकेतन सामान्यतया जटिलता संकेत गर्न प्रयोग गरिन्छ।
कम्प्यूटेशनल मोडेलहरू
गणना मोडेलको छनोट, जसमा समयको एकाइमा गरिने आवश्यक कार्यहरू निर्दिष्ट गर्ने समावेश हुन्छ, जटिलता निर्धारण गर्न महत्त्वपूर्ण छ। यो कहिलेकाहीँ एक बहु टेप ट्युरिङ मेसिनको रूपमा उल्लेख गरिन्छ जब गणना प्रतिमान विशेष रूपमा वर्णन गरिएको छैन।
गणनाको एक निर्धारणात्मक मोडेल एक हो जसमा मेसिनको पछिल्ला अवस्थाहरू र सञ्चालन गरिने कार्यहरू पुरा तरिकाले अघिल्लो अवस्थाद्वारा परिभाषित हुन्छन्। पुनरावर्ती प्रकार्यहरू, ल्याम्ब्डा क्याल्कुलस, र ट्युरिङ मेसिनहरू पहिलो नियतात्मक मोडेलहरू थिए। अनियमित-पहुँच मेसिनहरू (राम-मेसिनहरू पनि भनिन्छ) वास्तविक-विश्व कम्प्युटरहरू अनुकरण गर्नको लागि एक लोकप्रिय प्रतिमान हो।
जब गणना मोडेल परिभाषित गरिएको छैन, एक बहु टेप ट्युरिङ मेसिन सामान्यतया मानिन्छ। मल्टिटेप ट्युरिङ मेसिनहरूमा, समयको जटिलता धेरैजसो एल्गोरिदमहरूका लागि RAM मेसिनहरूमा जस्तै हुन्छ, यद्यपि यो समानता प्राप्त गर्नका लागि मेमोरीमा डाटा कसरी भण्डारण गरिन्छ भन्ने कुरामा ध्यान दिन आवश्यक हुन सक्छ।
कम्प्युटिङको गैर-निर्धारित मोडेलमा गणनाका केही चरणहरूमा विभिन्न छनौटहरू गर्न सकिन्छ, जस्तै गैर-निर्धारित ट्युरिङ मेसिनहरू। जटिलता सिद्धान्तमा, सबै सम्भाव्य विकल्पहरू एकै समयमा विचार गरिन्छ, र गैर-निर्धारित समय जटिलता भनेको समयको मात्रा हो जब उत्तम छनौटहरू सधैं गरिन्छ। यसलाई अर्को तरिकामा भन्नुपर्दा, गणना आवश्यक पर्ने धेरै (समान) प्रोसेसरहरूमा एकसाथ गरिन्छ, र गैर-निर्धारित गणना समय भनेको गणना पूरा गर्नको लागि पहिलो प्रोसेसरले लिएको समय हो। यो समानान्तरता विशेष क्वान्टम एल्गोरिदमहरू चलाउँदा सुपरपोज्ड एन्टेन्ग्ल्ड स्टेटहरू प्रयोग गरेर क्वान्टम कम्प्युटिङमा प्रयोग गर्न सकिन्छ, उदाहरणका लागि सानो पूर्णाङ्कहरूको कारककरण।
यदि यस्तो गणना मोडेल हाल व्यावहारिक छैन भने पनि, यसको सैद्धान्तिक महत्त्व छ, विशेष गरी P = NP समस्याको सम्बन्धमा, जसले "बहुपद समय" र "गैर-निर्धारित बहुपद समय" को प्रयोग गरेर उत्पन्न जटिलता वर्गहरू कम्तिमा माथिल्लो रूपमा सोध्छ। सीमाहरू समान छन्। एक नियतात्मक कम्प्यूटरमा, NP-algorithm को अनुकरण गर्न "घातीय समय" चाहिन्छ। यदि कुनै कार्य गैर-निर्धारित प्रणालीमा बहुपद समयमा समाधान गर्न सकिन्छ भने, यो NP कठिनाई वर्गसँग सम्बन्धित छ। यदि कुनै मुद्दा NP मा छ र कुनै अन्य NP समस्या भन्दा सजिलो छैन भने, यसलाई NP-पूर्ण भनिन्छ। Knapsack समस्या, यात्रा विक्रेता समस्या, र बुलियन सन्तुष्टि समस्या सबै NP-पूर्ण संयोजन समस्याहरू हुन्। सबैभन्दा प्रसिद्ध एल्गोरिथ्ममा यी सबै समस्याहरूको लागि घातीय जटिलता छ। यदि यी मध्ये कुनै पनि समस्यालाई निर्धारक मेसिनमा बहुपदीय समयमा समाधान गर्न सकिन्छ भने, सबै NP समस्याहरू बहुपद समयमा पनि समाधान गर्न सकिन्छ, र P = NP स्थापना हुनेछ। 2017 को रूपमा, यो व्यापक रूपमा अनुमान गरिएको छ कि P NP, NP समस्याहरूको सबैभन्दा खराब अवस्थाहरू मौलिक रूपमा समाधान गर्न गाह्रो हुन्छ, अर्थात्, रोचक इनपुट लम्बाइ दिएका कुनै पनि सम्भाव्य समय अवधि (दशकहरू) भन्दा धेरै समय लाग्छ।
समानान्तर र वितरित कम्प्युटिङ
समानान्तर र वितरित कम्प्युटिङले धेरै प्रोसेसरहरूमा विभाजन गर्ने प्रक्रिया समावेश गर्दछ जुन सबै एकै समयमा सञ्चालन हुन्छन्। विभिन्न मोडेलहरू बीचको आधारभूत भिन्नता प्रोसेसरहरू बीच डाटा पठाउने विधि हो। प्रोसेसरहरू बीच डाटा प्रसारण सामान्यतया समानान्तर कम्प्युटिङमा धेरै छिटो हुन्छ, जबकि वितरित कम्प्युटिङमा प्रोसेसरहरू बीच डाटा स्थानान्तरण नेटवर्कमा गरिन्छ र यसरी पर्याप्त ढिलो हुन्छ।
N प्रोसेसरहरूमा गणना गर्दा यसले एकल प्रोसेसरमा लिने समयको N द्वारा भागफल लिन्छ। वास्तविकतामा, किनकि केही सबटास्कहरू समानान्तर हुन सक्दैनन् र केही प्रोसेसरहरूले अर्को प्रोसेसरबाट परिणामको लागि पर्खनु पर्ने हुन सक्छ, यो सैद्धान्तिक रूपमा आदर्श बाउन्ड कहिल्यै प्राप्त हुनेछैन।
मुख्य जटिलता मुद्दा भनेको एल्गोरिदमहरू विकास गर्नु हो ताकि प्रोसेसरहरूको संख्याद्वारा कम्प्युटिङ समयको उत्पादन एकल प्रोसेसरमा समान गणना गर्न आवश्यक समयको नजिक होस्।
क्वान्टम गणना
क्वान्टम कम्प्युटर भनेको क्वान्टम मेकानिक्समा आधारित गणना मोडेल भएको कम्प्युटर हो। चर्च–ट्युरिङ थेसिस क्वान्टम कम्प्युटरका लागि सत्य हो, जसको अर्थ क्वान्टम कम्प्युटरले समाधान गर्न सक्ने कुनै पनि समस्या ट्युरिङ मेसिनद्वारा पनि समाधान गर्न सकिन्छ। जे होस्, केही कार्यहरू सैद्धान्तिक रूपमा कम टेम्पोरल जटिलता भएको क्लासिकल कम्प्युटरको सट्टा क्वान्टम कम्प्युटर प्रयोग गरेर समाधान गर्न सकिन्छ। अहिलेको लागि, यो कडा सैद्धान्तिक छ, किनकि कसैलाई थाहा छैन कि कसरी व्यावहारिक क्वान्टम कम्प्युटर विकास गर्ने।
क्वान्टम कम्प्लेक्सिटी थ्योरी क्वान्टम कम्प्युटरहरूद्वारा समाधान गर्न सकिने बिभिन्न प्रकारका समस्याहरूको अनुसन्धान गर्नको लागि सिर्जना गरिएको थियो। यो पोस्ट-क्वान्टम क्रिप्टोग्राफीमा प्रयोग गरिन्छ, जुन क्वान्टम कम्प्युटर आक्रमणहरूको प्रतिरोधी क्रिप्टोग्राफिक प्रोटोकलहरू सिर्जना गर्ने प्रक्रिया हो।
समस्याको जटिलता (तल्लो सीमा)
समस्या समाधान गर्न सक्ने एल्गोरिदमका जटिलताहरू, पत्ता नलागेका प्रविधिहरू सहित, समस्याको जटिलता हो। नतिजाको रूपमा, समस्याको जटिलता कुनै पनि एल्गोरिदमको जटिलता बराबर हुन्छ जसले यसलाई समाधान गर्छ।
नतिजाको रूपमा, ठूलो ओ नोटेशनमा दिइएको कुनै पनि जटिलताले एल्गोरिदम र साथमा समस्या दुवैको जटिलतालाई प्रतिनिधित्व गर्दछ।
अर्कोतर्फ, मुद्दाको जटिलतामा अतुलनीय तल्लो सीमाहरू प्राप्त गर्न प्रायः गाह्रो हुन्छ, र त्यसो गर्नका लागि केही रणनीतिहरू छन्।
धेरैजसो समस्याहरू समाधान गर्नको लागि, सबै इनपुट डेटाहरू पढ्नु पर्छ, जसले डेटाको परिमाणको अनुपातमा समय लिन्छ। नतिजाको रूपमा, त्यस्ता समस्याहरूमा कम्तिमा रेखीय जटिलता हुन्छ, वा ठूलो ओमेगा नोटेशनमा, Ω(n) को जटिलता हुन्छ।
कम्प्युटर बीजगणित र कम्प्यूटेशनल बीजगणित ज्यामिति जस्ता केही समस्याहरू, धेरै ठूलो समाधानहरू छन्। किनभने आउटपुट लेखिएको हुनुपर्छ, जटिलता आउटपुटको अधिकतम आकार द्वारा सीमित छ।
क्रमबद्ध गर्ने एल्गोरिदमको लागि आवश्यक तुलनाहरूको संख्यामा Ω(nlogn) को ननलाइनर तल्लो सीमा हुन्छ। नतिजाको रूपमा, उत्तम क्रमबद्ध एल्गोरिदमहरू सबैभन्दा कुशल छन् किनभने तिनीहरूको जटिलता O(nlogn) हो। त्यहाँ एन छन् भन्ने तथ्य! चीजहरू व्यवस्थित गर्ने तरिकाहरूले यो तल्लो सीमामा जान्छ। किनभने प्रत्येक तुलनाले n को यो सङ्ग्रहलाई विभाजन गर्छ! अर्डरलाई दुई टुक्रामा पार्नुहोस्, सबै अर्डरहरू छुट्याउन आवश्यक पर्ने N तुलनाहरूको संख्या 2N > n! हुनु पर्छ, स्टर्लिङको सूत्रद्वारा O(nlogn) लाई बुझाउँछ।
एउटा समस्यालाई अर्को समस्यामा घटाउनु कम जटिलता बाधाहरू प्राप्त गर्नको लागि साझा रणनीति हो।
एल्गोरिथ्म विकास
एल्गोरिदमको जटिलताको मूल्याङ्कन गर्नु डिजाइन प्रक्रियाको महत्त्वपूर्ण तत्व हो किनभने यसले अपेक्षित कार्यसम्पादनको बारेमा उपयोगी जानकारी प्रदान गर्दछ।
यो एक बारम्बार गलतफहमी हो कि, मूर को कानून को परिणाम को रूप मा, जो आधुनिक कम्प्यूटर शक्ति को घातीय वृद्धि को भविष्यवाणी गर्दछ, एल्गोरिदम को जटिलता को मूल्यांकन कम सान्दर्भिक हुनेछ। यो गलत छ किनभने बढेको पावरले ठूलो मात्रामा डाटा (ठूलो डाटा) प्रशोधन गर्न अनुमति दिन्छ। उदाहरणका लागि, कुनै पनि एल्गोरिदमले एक सेकेन्डभन्दा कम समयमा राम्रोसँग काम गर्नुपर्छ जब वर्णमाला क्रमबद्ध रूपमा केही सयौं प्रविष्टिहरूको सूची, जस्तै पुस्तकको ग्रन्थसूची। अर्कोतर्फ, एक मिलियन प्रविष्टिहरूको लागि (उदाहरणका लागि, ठूला सहरका फोन नम्बरहरू), आधारभूत एल्गोरिदमहरू जसलाई O(n2) तुलनाहरू आवश्यक पर्दछ, एक ट्रिलियन तुलनाहरू प्रदर्शन गर्नुपर्नेछ, जुन 10 को गतिमा तीन घण्टा लाग्नेछ। प्रति सेकेन्ड मिलियन तुलना। Quicksort र मर्ज क्रम, अर्कोतर्फ, केवल nlogn तुलनाहरू चाहिन्छ (पूर्वको लागि औसत-केस जटिलताको रूपमा, पछिल्लोको लागि सबैभन्दा खराब-केस जटिलताको रूपमा)। यसले n = 30,000,000 को लागि लगभग 1,000,000 तुलनाहरू उत्पादन गर्दछ, जसले प्रति सेकेन्ड 3 मिलियन तुलनामा 10 सेकेन्ड मात्र लिनेछ।
नतिजाको रूपमा, जटिलता मूल्याङ्कनले कार्यान्वयन गर्नु अघि धेरै असक्षम एल्गोरिदमहरू हटाउन अनुमति दिन सक्छ। यो पनि सबै सम्भावित भेरियन्टहरू परीक्षण नगरीकन जटिल एल्गोरिदमहरू ठीक-ट्यून गर्न प्रयोग गर्न सकिन्छ। जटिलताको अध्ययनले जटिल एल्गोरिदमको सबैभन्दा महँगो चरणहरू निर्धारण गरेर कार्यान्वयनको दक्षता बढाउनको लागि प्रयासलाई केन्द्रित गर्न अनुमति दिन्छ।
प्रमाणीकरण पाठ्यक्रमको साथमा आफूलाई विस्तृत रूपमा परिचित गर्न तपाईंले तलको तालिका विस्तार र विश्लेषण गर्न सक्नुहुन्छ।
EITC/IS/CCTF कम्प्युटेशनल जटिलता सिद्धान्त आधारभूत प्रमाणीकरण पाठ्यक्रमले भिडियो फारममा खुला पहुँच शिक्षासम्बन्धी सामग्रीहरू सन्दर्भ गर्दछ। सिकाइ प्रक्रियालाई चरण-दर-चरण संरचना (कार्यक्रमहरू -> पाठहरू -> विषयहरू) सान्दर्भिक पाठ्यक्रम भागहरू समावेश गरी विभाजन गरिएको छ। सहभागीहरूले उत्तरहरू पहुँच गर्न सक्छन् र वर्तमानमा प्रगति गरिएको EITC कार्यक्रम पाठ्यक्रम विषय अन्तर्गत ई-लर्निङ इन्टरफेसको प्रश्न र उत्तर खण्डमा थप सान्दर्भिक प्रश्नहरू सोध्न सक्छन्। डोमेन विशेषज्ञहरूसँग प्रत्यक्ष र असीमित परामर्श प्लेटफर्म एकीकृत अनलाइन सन्देश प्रणाली, साथै सम्पर्क फारम मार्फत पनि पहुँचयोग्य छ।
प्रमाणीकरण प्रक्रियामा विवरणहरूको लागि जाँच गर्नुहोस् कसरी यो काम गर्दछ.
प्राथमिक सहयोगी पाठ्यक्रम पढ्ने सामग्री
एस. अरोरा, बी. बराक, कम्प्यूटेशनल जटिलता: एक आधुनिक दृष्टिकोण
https://theory.cs.princeton.edu/complexity/book.pdf
माध्यमिक सहयोगी पाठ्यक्रम पढ्ने सामग्री
O. Goldreich, जटिलता सिद्धान्तको परिचय:
https://www.wisdom.weizmann.ac.il/~oded/cc99.html
असत्य गणितमा सहायक पाठ्यक्रम पढ्ने सामग्री
J. Aspnes, Discrete Mathematics मा नोट्स:
https://www.cs.yale.edu/homes/aspnes/classes/202/notes.pdf
ग्राफ सिद्धान्तमा सहायक पाठ्यक्रम पढ्ने सामग्री
आर. डिस्टेल, ग्राफ थ्योरी:
https://diestel-graph-theory.com/
EITC/IS/CCTF कम्प्युटेसनल कम्प्लेक्सिटी थ्योरी फन्डामेन्टल्स प्रोग्रामको लागि पूर्ण अफलाइन आत्म-शिक्षा तयारी सामग्रीहरू PDF फाइलमा डाउनलोड गर्नुहोस्।
EITC/IS/CCTF तयारी सामग्री - मानक संस्करण
EITC/IS/CCTF तयारी सामग्री - समीक्षा प्रश्नहरूको साथ विस्तारित संस्करण