2009-08-20 8 views
6

मैं सोच रहा था कि संपीड़न एल्गोरिदम है, आज सामान्य उपयोग में, जिसमें एक निश्चित बिंदु है, यानी एक पहचान फ़ाइल है।एक संपीड़न एल्गोरिदम पर निश्चित बिंदु आजकल व्यापक रूप से उपयोग किया जाता है

समझाओ, चलिए C : byte[] -> byte[] को संपीड़न एल्गोरिदम का प्रतिनिधित्व करने वाले फ़ंक्शन को कॉल करें। मुझे पता है कि वहां मौजूद है, तो (और यह क्या है, अगर यह संभव है उचित समय में निर्धारित करने के लिए) एक फ़ाइल f ऐसी है कि

C(f) = f

है यही कारण है, कि, जब एक उपयुक्त से संकुचित एक फ़ाइल चाहते हैं, आजकल आम उपयोग में व्यापक रूप से ज्ञात संपीड़न एल्गोरिदम, परिणाम के रूप में खुद को उत्पन्न करेगा।

आप ऐसी घटना का पता है?

उत्तर

4

हाँ! यह quine समस्या पर एक संस्करण है।

  1. एक उदाहरण gzip का उपयोग करता है: http://groups.google.com/group/comp.compression/browse_thread/thread/c57c322e15c782aa/350d9fb166fdf11f

  2. एक उदाहरण zip/unzip का उपयोग करता है: http://www.steike.com/code/useless/zip-file-quine/

+0

कूल! वैसे, क्या आपके पास दूसरे लिंक से आलेख की एक प्रति है? लड़के ने कहा कि वह इसे खो गया है ... मैं इसे पढ़ने के लिए वास्तव में सराहना करता हूँ! आपके उत्तर के लिए धन्यवाद! –

+0

@ ब्रूनो रीइस: क्षमा करें, मुझे डर है कि मैं नहीं करता हूं। –

+0

साफ। यह ध्यान रखना दिलचस्प है कि हालांकि पहले परिणाम को कम करने से खुद को पैदा होता है, इसे संपीड़ित नहीं करता है। ब्रायन का जवाब निश्चित रूप से इस पर विस्तार से बताता है। –

3

चेतावनी: बल्कि पंडिताऊ जवाब।

ऐसे कई मामले हैं जहां डी (एफ) = एफ (डी को डिकंप्रेशन के रूप में परिभाषित किया जा रहा है)। हालांकि, संपीड़न बिल्कुल परिभाषित नहीं है। अधिकांश संपीड़न एल्गोरिदम के लिए, संपीड़न एल्गोरिदम के विभिन्न कार्यान्वयन अलग-अलग आउटपुट फाइलें (विभिन्न आकारों) प्रदान करेंगे। दो कार्यक्रमों, 1 और पूर्ण अंतर के लिए 2. पर विचार करें, यह आवश्यक है कि डी 1 (एफ) सभी वैध एफ इसी के लिए डी 2 (एफ) के बराबर होना चाहिए, यह आवश्यक है कि डी 2 (सी 2 (एफ)) == डी 2 (सी 1 (एफ)) == डी 1 (सी 1 (एफ)) == डी 1 (सी 2 (एफ)), सभी वैध एफ के लिए हालांकि यह पूरी तरह से अनावश्यक है कि सी 1 (एफ) == सी 2 (एफ), और यह शायद ही कभी वास्तव में मुकदमा।

तो, यदि आप वास्तव में ऐसी क्विंस को संपीड़ित करते हैं, तो उसी फ़ाइल के साथ समाप्त होने की संभावना नहीं है, जब तक कि आप ऐसा प्रोग्राम करने के लिए उपयोग नहीं करते हैं (जो असंभव है, क्योंकि इस तरह के क्विन्स हैं आमतौर पर हाथ से तैयार किए जाते हैं, सी (एफ) के साथ कभी परीक्षण नहीं किया जाता है)।

हालांकि यह संभव है (वास्तव में, मामूली!) एक प्रोग्राम तैयार करने के लिए जिसके लिए सी (एफ) == एफ कुछ एफ के लिए, ज्यादातर लोग इसके बजाय अधिक अच्छी तरह से परिभाषित मामले के रूप में इंगित करते हैं जहां डी (एफ) == एफ (एफ के प्रारूप के सभी वैध, संगत डिकंप्रेशन के लिए डी 1 (एफ) == डी 2 (एफ) के बाद, मानते हुए एफ मान्य है)।

तो, ऐसे मामले हैं जहां सी (एफ) == एफ, लेकिन आम तौर पर यह पूछने का गलत सवाल है, और आपको इसके बजाय उन मामलों के लिए पूछना चाहिए जहां डी (एफ) == एफ ... अन्य लोग जिसने प्रश्न का उत्तर दिया है।

+0

ब्रायन, आप बिल्कुल सही हैं! मुझे विपरीत सवाल पूछा जाना चाहिए था। आपको जवाब के लिए धन्यवाद! –

संबंधित मुद्दे

 संबंधित मुद्दे