निर्धारण करने के लिए एल्गोरिथ्म: Algorithm for determining a file’s identityएक फ़ाइल की पहचान (अनुकूलन) इस सवाल का आगे
संक्षिप्त: मैं जो समय के विशाल बहुमत से काम करता है एक फाइल को पहचान निर्धारित करने के लिए एक सस्ते एल्गोरिथ्म के लिए देख रहा हूँ।
मैं आगे बढ़ गया और एक एल्गोरिदम लागू किया जो मुझे "सुंदर अद्वितीय" हैश प्रति फ़ाइल देता है।
तरह से मेरी एल्गोरिथ्म काम करता है:
एक निश्चित सीमा से की तुलना में छोटे फ़ाइलों के लिए मैं पहचान हैश के लिए पूरा फ़ाइलें सामग्री का उपयोग करें।
थ्रेसहोल्ड से बड़ी फ़ाइलों के लिए मैं एक्स आकार के यादृच्छिक एन नमूने लेता हूं।
मैं हैश किए गए डेटा में फाइलसाइज शामिल करता हूं। (जिसका अर्थ है विभिन्न आकारों के साथ सभी फाइलों को एक अलग हैश में परिणाम)
सवाल:
क्या मान मैं एन और एक्स के लिए चुनना चाहिए (कितने यादृच्छिक नमूने मैं जो आकार का लेना चाहिए?) मैं 8 के प्रत्येक के 4 नमूने के साथ गया और एल्गोरिदम को स्टंप करने में सक्षम नहीं हूं। मैंने पाया कि नमूने की मात्रा में तेजी से बढ़ने से एल्गोरिदम की गति कम हो जाती है (कारण खोज बहुत महंगी होती है)
गणित एक: इस एल्गोरिदम को उड़ाने के लिए मेरी फ़ाइलों को कितनी अलग-अलग करने की आवश्यकता है। (एक ही लंबाई वाले 2 अलग-अलग फाइलें एक ही हैश होने के बाद समाप्त होती हैं)
ऑप्टिमाइज़ेशन एक: क्या कोई तरीका है कि मैं थ्रूपुट को बेहतर बनाने के लिए अपने ठोस कार्यान्वयन को अनुकूलित कर सकता हूं (मुझे लगता है कि मैं लगभग 100 फाइलें एक सेकंड पर कर सकता हूं मेरी प्रणाली)।
क्या यह कार्यान्वयन सचेत दिखता है? क्या आप किसी वास्तविक दुनिया के उदाहरणों के बारे में सोच सकते हैं जहां यह असफल हो जाएगा। (मेरा ध्यान मीडिया फ़ाइलों पर है)
प्रासंगिक जानकारी:
आपकी मदद के लिए धन्यवाद!
नाइटपिकिंग: हस्ताक्षर !? आपका मतलब हस्ताक्षर है? –