सन्दर्भ-रहित व्याकरण पार्सिङले व्याकरणद्वारा परिभाषित उत्पादन नियमहरूको सेट अनुसार प्रतीकहरूको अनुक्रम विश्लेषण समावेश गर्दछ। यो प्रक्रिया साइबर सुरक्षा सहित कम्प्युटर विज्ञानका विभिन्न क्षेत्रहरूमा आधारभूत छ, किनकि यसले हामीलाई संरचित डेटा बुझ्न र हेरफेर गर्न अनुमति दिन्छ। यस जवाफमा, हामी सन्दर्भ-रहित व्याकरण पार्स गर्नको लागि एल्गोरिदमको वर्णन गर्नेछौं र यसको समय जटिलतामा छलफल गर्नेछौं।
सन्दर्भ-रहित व्याकरणहरू पार्स गर्नको लागि सबैभन्दा सामान्य रूपमा प्रयोग हुने एल्गोरिथ्म CYK एल्गोरिथ्म हो, जसलाई यसको आविष्कारकहरू Cocke, Younger र Kasami पछि नाम दिइएको छ। यो एल्गोरिथ्म डायनामिक प्रोग्रामिङमा आधारित छ र बटम-अप पार्सिङको सिद्धान्तमा काम गर्छ। यसले एक पार्स तालिका बनाउँछ जसले इनपुटको सबस्ट्रिङका लागि सबै सम्भावित पार्सहरूलाई प्रतिनिधित्व गर्दछ।
CYK एल्गोरिथ्म निम्नानुसार काम गर्दछ:
1. nxn आयामहरूको साथ पार्स तालिका प्रारम्भ गर्नुहोस्, जहाँ n इनपुट स्ट्रिङको लम्बाइ हो।
2. इनपुट स्ट्रिङमा प्रत्येक टर्मिनल प्रतीकको लागि, यसलाई उत्पादन गर्ने गैर-टर्मिनल प्रतीकहरूसँग पार्स तालिकामा सम्बन्धित कक्ष भर्नुहोस्।
3. प्रत्येक सबस्ट्रिङ लम्बाइ l 2 देखि n सम्म, र प्रत्येक सुरूवात स्थिति i 1 देखि n-l+1 सम्म, निम्न गर्नुहोस्:
a प्रत्येक विभाजन बिन्दु p को लागि i देखि i+l-2 सम्म, र प्रत्येक उत्पादन नियम A -> BC, जाँच गर्नुहोस् कि कक्षहरू (i, p) र (p+1, i+l-1) मा ननटर्मिनल प्रतीकहरू B र C समावेश छन्। , क्रमशः। यदि त्यसो हो भने, सेलमा A थप्नुहोस् (i, i+l-1)।
4. यदि व्याकरणको सुरुवात चिन्ह कक्ष (1, n) मा अवस्थित छ भने, इनपुट स्ट्रिङ व्याकरणबाट व्युत्पन्न गर्न सकिन्छ। अन्यथा, यो हुन सक्दैन।
CYK एल्गोरिदमको समय जटिलता O(n^3 * |G|) हो, जहाँ n इनपुट स्ट्रिङको लम्बाइ र |G| व्याकरणको आकार हो। यो जटिलता पार्स तालिका भर्न प्रयोग गरिने नेस्टेड लूपहरूबाट उत्पन्न हुन्छ। एल्गोरिदमले प्रत्येक सबस्ट्रिङ लम्बाइको लागि सबै सम्भावित विभाजन बिन्दुहरू र उत्पादन नियमहरू जाँच गर्दछ, परिणामस्वरूप घन समय जटिलता।
एल्गोरिदम चित्रण गर्न, निम्न सन्दर्भ-रहित व्याकरणलाई विचार गर्नुहोस्:
S -> AB | BC
A -> AA | a
B -> AB | b
C -> BC | ग
र इनपुट स्ट्रिङ "abc"। यस उदाहरणको लागि पार्स तालिका निम्नानुसार देखिन्छ:
| १ | २ | ३ |
——-|—–|—–|—–|
१ | A,S | B, C | एस |
——-|—–|—–|—–|
२ | | B, C | ए |
——-|—–|—–|—–|
३ | | | C |
——-|—–|—–|—–|
यस तालिकामा, कक्ष (1, 3) मा सुरुको प्रतीक S समावेश छ, जसले इनपुट स्ट्रिङ "abc" लाई दिइएको व्याकरणबाट व्युत्पन्न गर्न सकिन्छ भनेर संकेत गर्दछ।
CYK एल्गोरिदम जस्ता सन्दर्भ-रहित व्याकरण पार्स गर्ने एल्गोरिदमले हामीलाई संरचित डेटाको विश्लेषण र बुझ्न अनुमति दिन्छ। यो एक पार्स तालिका निर्माण गरेर र व्याकरणको उत्पादन नियमहरू अनुसार मान्य व्युत्पन्नहरूको लागि जाँच गरेर सञ्चालन गर्दछ। CYK एल्गोरिदमको समय जटिलता O(n^3 * |G|) हो, जहाँ n इनपुट स्ट्रिङको लम्बाइ र |G| व्याकरणको आकार हो।
अन्य भर्खरका प्रश्न र उत्तरहरू सम्बन्धमा जटिलता:
- के PSPACE वर्ग EXPSPACE वर्गको बराबर छैन?
- के P जटिलता वर्ग PSPACE वर्गको उपसमूह हो?
- के हामी एक निश्चित TM मा कुनै पनि NP पूर्ण समस्याको लागि एक कुशल बहुपद समाधान खोजेर Np र P वर्ग समान छन् भनेर प्रमाणित गर्न सक्छौं?
- के NP वर्ग EXPTIME कक्षा बराबर हुन सक्छ?
- के PSPACE मा समस्याहरू छन् जसको लागि कुनै ज्ञात NP एल्गोरिथ्म छैन?
- के एक SAT समस्या NP पूर्ण समस्या हुन सक्छ?
- के NP जटिलता वर्गमा समस्या हुन सक्छ यदि त्यहाँ एक गैर-निर्धारित ट्युरिङ मेसिन छ जसले यसलाई बहुपद समयमा समाधान गर्नेछ।
- NP बहुपदीय समय प्रमाणिकरण भएका भाषाहरूको वर्ग हो
- के P र NP वास्तवमा एउटै जटिलता वर्ग हो?
- के प्रत्येक सन्दर्भ मुक्त भाषा P जटिलता वर्गमा छ?
जटिलतामा थप प्रश्न र उत्तरहरू हेर्नुहोस्