नियमित भाषा के साथ अपनी सीएफजी भाषा के प्रतिच्छेदन की गणना करें ∑ki=0Ak (यह राज्यों की संख्या को गुणा करने की मात्रा है kऔर एक "मृत अंत" राज्य को जोड़ना)। अब जांचें कि क्या परिणाम खाली है: एक व्याकरण में परिवर्तित करें (मुझे लगता है कि परिणाम में बहुपद आकार होगा) और एप्सिलॉन प्रस्तुतियों से "बैकट्रैक"।
संपादित करें: केव ने उल्लेख किया कि यह बहुपद है k, तो अगर k एक इनपुट के रूप में दिया गया है, एल्गोरिथ्म में घातीय है |k|। हालांकि, केव ने इसे ठीक करने का एक तरीका पाया। मूल ऑटोमेटन को सीएफजी में बदलें, और सभी टर्मिनलों को एक निश्चित टर्मिनल द्वारा बदलें। अब प्रत्येक गैर-टर्मिनल द्वारा उत्पन्न शब्द के न्यूनतम आकार को खोजने के लिए एक पुनरावृत्त एल्गोरिथ्म का उपयोग करें, निम्नानुसार है।
के साथ सभी लंबाई प्रारंभ करें ∞, और फिर स्पष्ट रूप से सभी लंबाई अपडेट करें: एक उत्पादन दिया A→at∏Bi (आदेश कोई फर्क नहीं पड़ता), डाल दिया f(A)=min(f(A),t+∑f(Bi))। दावा: यह अभिसरण करता हैO(n) पुनरावृत्तियों, कहाँ nगैर-टर्मिनलों की संख्या है। कारण यह है कि न्यूनतम लंबाई वाले शब्द को उत्पन्न करने वाले वृक्ष में, किसी भी गैर-टर्मिनल का दो बार उपयोग नहीं किया जाता है; प्रत्येक "एज" प्रक्रिया के लिए अधिकतम एक पुनरावृत्ति लेता है (कुछ किनारों को समानांतर में "अपडेट" किया जा सकता है)।