अधिकतम चौड़ाई की लाइनों में समान रूप से पाठ को तोड़ने के लिए एक रैखिक समय एल्गोरिथ्म है। यह SMAWK (या Knuth & Plass) और "समान रूप से" का उपयोग करता है: http://en.wikipedia.org/wiki/Word_wrap#Minimum_raggedness
क्या एल्गोरिथ्म के लिए एक एल्गोरिथ्म या एक अवतल लागत कार्य है, जिसमें अधिकतम पंक्ति चौड़ाई के बजाय, मैं उस पाठ की संख्या को ध्यान में रखना चाहूंगा, जिसमें मैं पाठ को तोड़ना चाहूंगा? इसके अलावा रैखिक समय में?
दूसरे शब्दों में, मैं एक लाइन ब्रेकिंग (या पैराग्राफ फॉर्मेशन, या वर्ड रैपिंग) एल्गोरिथ्म की तलाश कर रहा हूं, जहां इनपुट वांछित लाइनों की संख्या हो, न कि वांछित लाइन चौड़ाई।
बस एक व्यावहारिक रूप से अनुपयोगी दृष्टिकोण का वर्णन करने के लिए: प्रत्येक शब्द जोड़ी के बीच में एन शब्द और एन -1 रिक्त स्थान हैं, एम वांछित लाइनों की संख्या है (एम <= एन)। प्रत्येक स्थान के बाद अधिकतम एक (संभवतः शून्य) लाइन-ब्रेक हो सकता है। अब, एल्गोरिथ्म प्रत्येक संभावित संयोजन में "रैगेडनेस" की गणना करते हुए ब्रेक लगाने की कोशिश करेगा और सबसे अच्छा रिटर्न देगा। यह बहुत तेजी से कैसे करें?
इसके अलावा, क्या ऐसी समस्या का कोई नाम है? समस्याओं का "परिवार" क्या है? (उदाहरण के लिए "बिन पैकिंग") अगर मुझे पूरी तरह से इष्टतम समाधान की आवश्यकता नहीं होगी, तो बस एक बहुत अच्छा, क्या इसे बहुत तेजी से हल करना संभव है? (हेयुरिस्टिक्स का कुछ रूप प्रयोग करने योग्य हो सकता है, यदि दिए गए इनपुट के लिए हमेशा समान, संभवतः उप-इष्टतम, समाधान होते हैं)।
अपडेट करें
चंद्रा चेकुरी ने बोले "क्लिनबर्ग में एक समस्या और गतिशील प्रोग्रामिंग पर टार्डोस अध्याय" का सुझाव दिया। यह एक अच्छा पढ़ा गया था लेकिन यह लाइन की गिनती के बजाय चौड़ाई के आधार पर लाइन ब्रेकिंग से संबंधित है। यह इस समस्या के अनुकूल हो सकता है, जिसे मैं अभी जानने की कोशिश कर रहा हूं। यहाँ समाधान के लिए एक अच्छी कड़ी है, वे इसे रैखिक समय में हल करने का दावा भी करते हैं: http://web.media.mit.edu/~dlanman/courses/cs157/HW5.pdf
साथ ही, स्कीना द्वारा द अल्गोरिथम डिज़ाइन मैनुअल में "8.5 द पार्टिशन प्रॉब्लम" एक अध्याय है, जो बिल्कुल ऑन-टॉपिक लगता है, मैं अभी भी इसे पढ़ रहा हूं, कठिन। (दुर्भाग्य से, मैंने जो समझा है, उसमें द्विघात समय जटिलता है)