जोड़ीदार दूरी में त्रुटियों के योग को कम करने के लिए गोलाई


25

निम्नलिखित समस्या की जटिलता के बारे में क्या जाना जाता है:

  • दिया गया: तर्कसंगत संख्याएँ ।x1<x2<<xn
  • आउटपुट: पूर्णांक ।y1y2yn
  • उद्देश्य:
    1i<jne(i,j),
    जहाँ
    e(i,j)=|(yjyi)(xjxi)|.

यही है, हम पूर्णांक के लिए तर्कसंगत संख्याओं को गोल करना चाहते हैं ताकि हम जोड़ीवार दूरी में त्रुटियों के योग को कम कर दें। प्रत्येक जोड़ी i,j हम चाहते हैं कि दूरी दूरी yjyi जितनी हो सके उतनी दूरी पर सही x_j-x_i होxjxi


प्रेरणा: एक उबाऊ मेट्रो यात्रा, और एक पोस्टर जो यात्रा के समय के एक मिनट के संकल्प में स्टेशनों के "स्थानों" को दर्शाता है। यहां हम उस त्रुटि को कम कर रहे हैं जो लोग करते हैं अगर वे पोस्टर का उपयोग स्टेशनों i और j के बीच यात्रा के समय को देखने के लिए करते हैं j, सभी जोड़े i <j पर औसत i<j

मार्ग नक्शा

(स्रोत)

उदाहरण के लिए, यहां हम चार स्टेशनों के बीच जोड़ीदार दूरियों के निम्नलिखित अनुमानों को पढ़ सकते हैं (संक्षिप्तता के लिए ए, बी, सी, डी का उपयोग कर):

  • A-B – 1 मिनट, B-C, 2 मिनट, C-D। 2 मिनट
  • ए-सी – 3 मिनट, बी-डी ≈ 4 मिनट
  • A-D ≈ 5 मिनट

क्या यह सबसे अच्छा संभव सन्निकटन है? यदि आप वास्तविक यात्रा के समय को जानते हैं, तो क्या आप एक बेहतर समाधान पा सकते हैं?


पहले, यह गतिशील प्रोग्रामिंग में एक सरल अभ्यास की तरह लग रहा था, लेकिन अब ऐसा लगता है कि वास्तविक सोच की कुछ मात्रा की आवश्यकता है।

क्या कोई इस समस्या को पहचानता है? या इसे हल करने के लिए एक चतुर एल्गोरिथ्म देखें?


संपादित करें: सवाल के कुछ प्राकृतिक रूप हैं जो टिप्पणियों में उल्लिखित हैं; आइए उन्हें कुछ नाम दें:

  • मंजिल / प्लस्तर लगाना संस्करण: यह आवश्यक है कि सभी के लिए ।मैंyi{xi,xi}i

  • पूर्णांक संस्करण: यह पर्याप्त है कि सभी के लिए । iyiZi

  • मोनोटोनिक संस्करण: यह आवश्यक है कि ।y1y2yn

  • गैर-मोनोटोनिक संस्करण: हमारे पास लिए हो सकता है । i < jyi>yji<j

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


क्या डीपी उस मामले के लिए काम करता है जब आप केवल आसन्न मापों की परवाह करते हैं?
सुरेश वेंकट

1
@ सुरेश वेंकट: वास्तव में, उस स्थिति में समस्या बहुत सरल हो जाती है: आप बस प्रत्येक i के लिए सबसे अच्छा अभिन्न दूरी का चयन करते हैं । यही है, आप स्वतंत्र रूप से प्रत्येक ( i - 1 , i ) को कम कर सकते हैं । yiyi1ie(i1,i)
जुल्का सुमेला

4
एस्टी अर्किन की यह रिपोर्ट संबंधित लगती है: ams.sunysb.edu/~estie/papers/beautification.pdf यह साबित होता है कि आउटपुट में अलग-अलग अंतर-बिंदु दूरी की संख्या को कम करना एनपी-हार्ड है। यह इस प्रश्न के रूप में बदलावों का कुल योग नहीं है, लेकिन शायद रिपोर्ट में कठोरता वाले गैजेट इस समस्या के लिए एक कठोरता प्रमाण का सुझाव दे सकते हैं।
वैल

2
मुझे लगता है कि इस समस्या को अच्छी तरह से ज्ञात तकनीकों का उपयोग करके निश्चित रूप से हल किया जाना चाहिए। आइए देखें कि क्या बाउंटी लोगों को इसे हल करने के लिए प्रेरित करने के लिए पर्याप्त है। :)
जूका सूमेला

1
@vzn: मुझे इस समस्या की कम्प्यूटेशनल जटिलता में दिलचस्पी है। यदि आप यह साबित कर सकते हैं कि एक बहुपद-समय स्थानीय खोज दृष्टिकोण है जो वैश्विक इष्टतम खोजने की गारंटी है, तो इनाम आपका है।
जुका सुओमेला

जवाबों:


9

ठीक है। डीपी एल्गोरिथ्म अनावश्यक रूप से जटिल होने लगता है। टिप्पणियों को पढ़ने के बाद मुझे लगता है कि यह समस्या के मोनोटोनिक संस्करण को हल कर सकता है (लेकिन मैंने हर विवरण की जांच नहीं की है)।

सबसे पहले, यह मान प्रत्येक , जहां एक्स मैं अभिन्न अंग है, { x मैं } आंशिक हिस्सा है। मान लें एक्स मैं करने के लिए गोल है एक्स मैं+ वी मैं , जहां वी मैं ग़ैर-ऋणात्मक पूर्णांक है (सामान्य रूप में निश्चित रूप से वी मैं नकारात्मक हो सकता है, लेकिन हम हमेशा इतनी बदल सकते हैं कि छोटी से छोटी वी मैं 0 है)।xi=xi+{xi}xi{xi}xixi+vivivivi

अब इस गोलाई को करते समय एक जोड़ी , x j की लागत पर विचार करें । लागत होनी चाहिएxixj

||vivj+xixj||{xi}{xj}+xixj||

पूर्ण मूल्यों के कारण अभिव्यक्ति जटिल है। हालांकि, ध्यान दें कि हमारे पास एकरसता है, इसलिए दो आंतरिक निरपेक्ष मूल्यों के अंदर की चीजों को समान संकेत होना चाहिए। चूंकि हमारे पास एक बाहरी निरपेक्ष मूल्य है, इसलिए यह वास्तव में कोई फर्क नहीं पड़ता कि वह चिन्ह क्या है, अभिव्यक्ति बस सरल करती है

|vivj({xi}{xj})|

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

अब हम साबित करने के लिए, अगर चाहते हैं , इष्टतम समाधान में हम होना आवश्यक वी मैंवी जे{xi}>{xj}vivj

यह सच नहीं है, कि हमारे पास एक जोड़ी लेकिन v i < v j है । हम यह दिखाएंगे कि यदि हम v i v v j को हल करते हैं तो समाधान सख्ती से बेहतर हो जाता है।{xi}>{xj}vi<vjvi vj

पहले हम और j के बीच के शब्द की तुलना करते हैं , यहां यह वास्तव में स्पष्ट है कि स्वैपिंग सख्ती से बेहतर है क्योंकि गैर-स्वैप संस्करण में, v i - v j और { x j } - { x i } का एक ही चिन्ह है, पूर्ण मूल्य दो पूर्ण मूल्यों का योग होगा।ijvivj{xj}{xi}

अब किसी भी , हम जोड़े ( i , k ) और ( j , k ) के योग की तुलना करते हैं । यही है, हमें तुलना करने की आवश्यकता हैk(i,k)(j,k)

और | v j - v k - ( { x i } - { x k } ) | + ||vivk({xi}{xk})|+|vjvk({xj}{xk})||vjvk({xi}{xk})|+|vivk({xj}{xk})|

का प्रयोग करें , बी , सी , डी निरपेक्ष मूल्य के अंदर चार शब्दों को निरूपित करने के लिए, यह है कि स्पष्ट है एक + बी = सी + डी । यह भी स्पष्ट है कि | - बी | | सी - डी | । परम मूल्य के उत्कर्ष से, हम जानते हैं | | + | B | | सी | + | डी | । सब कुछ खत्म राशि ले लो एक्स कश्मीरABCDA+B=C+D|AB||CD||A|+|B||C|+|D|xkहमें पता है कि स्वैपिंग केवल बेहतर हो सकती है।

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

अंत में हम समस्या के मोनोटोनिक पूर्णांक संस्करण पर जाना चाहते हैं। हम वास्तव में साबित कर सकते हैं कि इष्टतम समाधान मोनोटोनिक मंजिल / छत संस्करण के समान है।

जैसा कि हमने माना, सबसे छोटा है। 0. सभी x i का समूह उनके v i के अनुसार है , और उन्हें समूह 0 , 1 , 2 , 2 कहते हैं , अधिकतम { v i } । हम पहले यह साबित करेंगे कि कोई खाली समूह नहीं हैं, लेकिन यह सरल है, यदि k -th समूह खाली है, किसी भी v i > k के लिए बस v i = v i - 1vixivi0,1,2,...,max{vi}kvi>kvi=vi1। यह देखने के लिए उद्देश्य समारोह हमेशा बेहतर बनाता है आसान है (मूल रूप से, क्योंकि )।|{xi}{xj}|<1

अब हम साबित करेगा, की औसत समूह में कश्मीर + 1 के कम से कम औसत है { x मैं } समूह में कश्मीर के साथ साथ 1 / 2 । यदि यह सत्य नहीं है, तो बस v i = v i - 1 को सभी v i > k के लिए गणना करें, फिर से अभिकलन से पता चलता है कि उद्देश्य फ़ंक्शन में सुधार हुआ है।{xi}k+1{xi}k1/2vi=vi1vi>k

चूंकि का औसत सीमा [ 0 , 1 ) में है , वास्तव में अधिकांश दो समूह हैं, जो फर्श / छत के संस्करण से मेल खाते हैं।{xi}[0,1)


1

बस एक विस्तारित टिप्पणी ... (शायद तुच्छ और / या गलत :)

यदि और एम की सबसे छोटा आम गुणक है मैं है, तो हम परिमेय से छुटकारा पाने के कर सकते हैं: एक्स ' मैं = एम * एक्स मैंxi=ai/biMbixi=Mxi

यदि (मंजिल, प्लस्तर लगाना प्रतिबंध) तो हम उपयोग कर सकते हैं द्विआधारी चर v मैं व्यक्त करने के लिए y ' मैं से इसकी दूरी का उपयोग कर एक्स ' मैं ( एल मैं = एक्स ' मैं - एम * एक्स मैं या आर मैं = एक्स ' मैं - एम * एक्स मैंyi{xi,xi}viyixiLi=xiMxiRi=xiMxi):

yi=xi+Livi+Ri(1vi)=xi+(LiRi)vi+Ri=xi+Divi+Ri

और मूल समस्या (?;) को उस को खोजने के बराबर होनी चाहिए जो मैं न्यूनतम करता हूं :vi

1i<jn|DiviDjvj|

साथ vi{0,1},DiZ


अपने पिछले योग का उपयोग कर के विस्तार वास्तव में सिर्फ चुनाव जहां प्रत्येक बाइनरी चर मंजिल / प्लस्तर लगाना के करीब है, उपरोक्त त्रुटि fn विचार यह इष्टतम दिखाया जा सकता है है x n ? ताकि पत्ते केवल के मामले कैसे के लिए दौर में एक्स एन रूप में मीटर n + 1e(i,j)xnxn जहांmएक पूर्णांक है। mn+12m
vzn

1
@vzn: मुझे लगता है कि यह एक प्रतिरूप है। अगर हम दौर गोलाई का उपयोग कर एक्स मैं मापदंड पर हम पाते हैं ( 0 , 1 , 9 ) की एक त्रुटि है कि 1.4 , लेकिन ( 0 , 2 , 9 ) की एक त्रुटि है 1.2 (परिणाम एक ही है अगर हम LCM से गुणा करने वाले परिमेय को समाप्त करते हैं)। (0,1.4,8.7)xi(0,1,9)1.4(0,2,9)1.2
मारिजियो डी बियासी

फिर भी नया विचार है। पर विचार फिर से। योग का विस्तार करें। यह v i और v 2 i के साथ कई शर्तों को कम कर देगा । लेकिन उत्तरार्द्ध v i के बराबर है ! इसलिए यह कम से कम के रूप में एक समस्या को कम कर देता है एक्स * डी जहां एक्स एक 0/1 है पंक्ति वेक्टर और डी एक है निरंतर स्तंभ वेक्टर । सच? तब वह तुच्छ है, और X को ऐसे चुनें जैसे कि D में संबंधित तत्व 1 हैe(i,j)vivi2viXDXDXDनकारात्मक है और 0 अगर यह सकारात्मक है ... QED?
vzn

1
@vzn: आप का उपयोग करता है, तो त्रुटि निरपेक्ष मूल्य समारोह खत्म करने के लिए है, तो आप प्राप्त कर जैसे शब्दों - 2 * डी मैं * डी जे * वी मैं * वी जे ; आप उन्हें कम से कम कैसे संभालेंगे? ((yiyj)(xixj))22DiDjvivj
Marzio De Biasi

उफ़! आपने उत्तर दिया कि इससे पहले कि मुझे यह महसूस करने के बाद उस टिप्पणी को हटाने का मौका मिला .. वैसे भी यह लगभग कुछ रैखिक मैट्रिक्स अनुकूलन समस्या को कम करने के लिए लगता है? यह भी एक शब्द के साथ जहां वी एक स्तंभ वेक्टर है ...? VVTV
vzn

1

एक और विस्तारित टिप्पणी ... गलत हो सकती है।

मैं फर्श / छत प्रतिबंधों के मामले में भी विचार कर रहा हूं, और मैं इसे गतिशील प्रोग्रामिंग का उपयोग करके हल करने की कोशिश कर रहा हूं (मैं नहीं कर सकता, लेकिन शायद यह तब काम करता है जब आम भाजक छोटा होता है)।

चलो का आंशिक हिस्सा बनने एक्स मैं , हम छोटी से बातों पर विचार { x मैं } सबसे बड़ा करने के लिए। मान लीजिए कि सबसे बड़ा { x k } है , और क्योंकि हम गतिशील प्रोग्रामिंग कर रहे हैं, हम पहले से ही "कुछ" जानते हैं (मैं समझाऊंगा कि यह क्या है) x k को छोड़कर बाकी सब के लिए इष्टतम समाधान के बारे में ।{xi}xi{xi}{xk}xk

जब हम ऊपर या नीचे गोल करते हैं, तो वस्तुनिष्ठ फ़ंक्शन में अंतर पर विचार करें । तो मूल रूप से कुछ x मैं को गिरफ्तार किया गया है, तो अंतर बस है 1 (वास्तव में बहुत सावधानी से नहीं की जाँच की है, लेकिन लगता है कि यह मामला है, यह वास्तव में महत्वपूर्ण है कि कोई फर्क नहीं पड़ता कि क्या है एक्स मैं बाईं ओर या सही का है एक्स कश्मीर अंतर हमेशा एक ही है); यदि मूल रूप से कुछ x i को गोल किया जाता है, तो अंतर 2 { x k } - 2 { x i } - 1 हैxkxixixkxi2{xk}2{xi}1। तो: हम जानते हैं कि निम्नलिखित तीन मात्राओं को ज्ञात करने पर हमें क्या निर्णय लेना चाहिए:

  1. कितनी चीजें गोल हो जाती हैं
  2. कितनी चीजें गोल हो जाती हैं
  3. उन x i के बीच का योग है जो नीचे गोल है{xi}xi

ठीक है, 1 और 2 मूलतः एक ही हैं, हम कर सकते हैं च [एन, Ndown, Sdown] पहली एन अंक (जब अंक के आरोही क्रम में हल कर रहे हैं के लिए इष्टतम समाधान हो ), की संख्या एक्स मैं नीचे राउंडेड नडाउन है , और राउंड डाउन होने वाले लोगों के लिए { x i } का योग है। फिर f [N-1] से f [N] कैसे जाना है, यह लिखना कठिन नहीं है।{xi}xi{xi}

समस्या निस्संदेह है, सडान के कई मूल्य हो सकते हैं। लेकिन यह तब काम करता है जब या तो आम भाजक छोटा होता है, या हम सब कुछ पहले एक ग्रिड बिंदु पर गोल कर सकते हैं और एक FPTAS प्राप्त कर सकते हैं (यदि उपरोक्त गतिशील कार्यक्रम सही है ...)


अभी @Marzio De Biasi की टिप्पणी देखी। उस उद्देश्य फ़ंक्शन का उपयोग करके इस गतिशील प्रोग्रामिंग के बारे में सोचना बहुत आसान है। चूंकि हम अनिवार्य रूप से अनुसार छँट रहे हैं , जब हम अंतिम एक पर विचार करने की कोशिश करते हैं, तो सभी निरपेक्ष मूल्य गायब हो जाते हैं। अतिरिक्त लागत या तो है Σ डी मैं v मैं या ( एन - 1 ) डी कश्मीर - Σ डी मैं v मैंDiDivi(N1)DkDivi
रोंग गे

ओके का पॉजिटिव होना जरूरी नहीं है। लेकिन वह भी संभाला जा सकता है। हम केवल के बीच अंतर बताने की आवश्यकता Σ | D i v i | और एन डी डब्ल्यू एन एन | डी के | + एन यू पी डी कश्मीर - Σ डी मैं v मैं । Ndown पिछले v j 's की संख्या है जो 0 के बराबर है, Nup पिछले v j की संख्या 1 के बराबर है।Di|Divi|Ndown|Dk|+NupDkDivivjvj
रोंग गे

यह आशाजनक लग रहा है, लेकिन मुझे लगता है कि इनपुट वैल्यू एक-दूसरे के बहुत करीब होने पर कुछ और मुश्किलें हैं। जैसे विचार करें और एक्स कश्मीर = 1.9 । अब हम हो सकता था अगर एक्स मैं को गिरफ्तार और एक्स कश्मीर पूर्णांक, हम अब अच्छा संपत्ति है कि ठीक 1 द्वारा त्रुटि परिवर्तन पर कि क्या आधार पर होता है एक्स कश्मीर ऊपर या नीचे गोल है। दूसरी ओर, अगर हम एक गोलाई को रोकते हैं जो अंकों के क्रम को बदल देता है (जैसा कि मेरे मूल प्रश्न में है), तो ऐसा लगता है कि हमें संभावित दौरों पर नज़र रखने की ज़रूरत है जो अभी भी गतिशील कार्यक्रम में उपलब्ध हैं; क्या हम वह कर सकते हैं?xi=1.1xk=1.9xixkxk
जुक्का सुकोला

1
@ जुक्का सूमेला, आपकी टिप्पणी देखने के बाद, मुझे एहसास हुआ कि हमें कभी भी बड़े साथ गोल नहीं करना चाहिए जबकि छोटे { x i } के साथ कुछ गोल किया जाना चाहिए। यह साबित किया जा सकता है यदि आप सभी मामलों की जांच करते हैं। फिर समस्या का उत्तर (गोल प्रतिबंधों के साथ) स्पष्ट है: एक दहलीज होना चाहिए, जिस दहलीज के ऊपर आपको गोल होना चाहिए, नीचे आपको गोल चक्कर में होना चाहिए, हो सकता है कि कुछ गोल और कुछ नीचे हो, लेकिन गुणवत्ता केवल संख्या पर निर्भर करते हैं। इन समाधानों को आसानी से गणना की जा सकती है। {xi}{xi}
रोंग गे

1
{xi}<{xj}{xk}{xi}{xj}{xk}xixjxjxi
रॉन्ग जीई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.