7

क्या आप सभी एल्गोरिदम लोगों को दोनों के संदर्भ में अद्भुत (कठिन, अजीब) जटिलता विश्लेषण प्राप्त करते हैं - परिणामस्वरूप ओ नोटेशन और विशिष्टता का परिणाम उनके विश्लेषण में किया जाता है?बिग ओ विश्लेषण के लिए एल्गोरिदम

उत्तर

2
+3

क्या यह एक एल्गोरिदम है? – shoosh

+0

@p यह उत्तर शायद ठीक है, भले ही यह केवल लिंक है। "एकरमेन का फ़ंक्शन" इंटरनेट पर खोजने के लिए पर्याप्त है और सवाल-जो शायद ऑफ-विषय-केवल एल्गोरिदम की मांग कर रहा है, न कि स्पष्टीकरण। – royhowie

1

गैर-निर्धारक रूप से बहुपद जटिलता को मेरा वोट मिलता है, खासतौर पर (स्वीकार्य रूप से माना जाता है) संभावना है कि यह बहुपद के समान हो सकता है। उसी नस में, कुछ भी जो सैद्धांतिक रूप से क्वांटम कंप्यूटिंग से लाभ उठा सकता है (एनबी इस सेट को सभी एल्गोरिदम नहीं है)।

दूसरा जो मेरा वोट प्राप्त करेगा वह मनमाना-परिशुद्धता संख्याओं पर सामान्य गणितीय परिचालन होगा - यह वह जगह है जहां आपको बड़ी संख्या में गुणा करने जैसी चीज़ों पर विचार करना होगा, छोटे से गुणा करने से अधिक महंगा है। Knuth में इस बारे में बहुत सारे विश्लेषण हैं (जो किसी के लिए खबर नहीं होनी चाहिए)। Karatsuba की विधि बहुत साफ है: अंकों (A1, A2) द्वारा आधे में दो कारकों में कटौती (; बी 2 बी 1) और A1 बी 1, बी 2 A1, A2 बी 1, ए 2 बी 2 गुणा अलग, और फिर परिणामों को जोड़ सकते। वांछित अगर वांछित ...

+0

करात्सुबा की विधि निफ्टी है, यह सच है। हालांकि, एक तेज चौकोर परिवर्तन एक रूपांतरण को निष्पादित करता है, इसलिए इसका उपयोग सबसे तेज़ गुणाओं को करने के लिए किया जा सकता है, यह मानते हुए कि संख्याएं मिश्रित इनपुट आकार एफएफटी लिखने और इसे ट्यून करने की उत्तेजना को उचित ठहराने के लिए काफी बड़ी हैं। –

+0

हम्म, मुझे इसे देखना होगा। सटीक पूर्णांक गुणा की गारंटी देने के लिए घटकों को कितना सटीक होना चाहिए? – Edmund

+0

जैसा कि मैं समझता हूं कि आपको अंतिम संख्या को पकड़ने के लिए पर्याप्त सटीकता की आवश्यकता है। हालांकि एफएफटी गुणा तकनीक का उपयोग सीधे पूर्णांक प्रकारों पर भी किया जा सकता है और हमेशा सटीक उत्तर देता है। मेरे पास यहां Knuth की मेरी प्रति नहीं है लेकिन मुझे लगता है कि वह तकनीक का उल्लेख करता है और उस पर चला जाता है। –

2

यह एक बहुत आसान है लेकिन कंघी सॉर्ट मेरे दिमाग को थोड़ा सा उड़ाता है।

http://en.wikipedia.org/wiki/Comb_sort

यह सबसे अधिक भाग के लिए यह एक बेहद जटिल बुलबुला प्रकार की तरह पढ़ता के लिए इस तरह के एक सरल एल्गोरिथ्म है, लेकिन यह हे है (एन * लॉग इन करें [n])। मुझे लगता है कि हल्के से प्रभावशाली।

फास्ट फूरियर ट्रांसफॉर्म के लिए एल्गोरिदम की पर्याप्तता भी प्रभावशाली है, गणित जो उनकी वैधता साबित करता है वह ट्रिपी है और कुछ खुद को साबित करने का प्रयास करना मजेदार था।

http://en.wikipedia.org/wiki/Fast_Fourier_transform

मैं काफी आसानी से प्रधानमंत्री मूलांक, कई प्रमुख मूलांक, और मिश्रित मूलांक एल्गोरिदम लेकिन एक है कि सेट जिसका आकार के होते हैं प्रधानमंत्री काफी अच्छा है पर काम करता है समझ सकते हैं।

15

मेरे पास है (काफी) कुछ उदाहरण:

  • union-find डेटा संरचना है, जो (परिशोधित) उलटा एकरमैन समय में आपरेशन का समर्थन करता है। यह विशेष रूप से अच्छा है क्योंकि डेटा संरचना कोड के लिए अविश्वसनीय रूप से आसान है।
  • Splay trees, जो स्वयं को संतुलित द्विआधारी पेड़ (अर्थात, बिना किसी अतिरिक्त जानकारी BST के अलावा अन्य संग्रहीत किया जाता है कर रहे हैं - कोई लाल/काले जानकारी Amortized analysis अनिवार्य रूप से टेढ़ा पेड़ों के लिए सीमा साबित करने के लिए आविष्कार किया गया था;। टेढ़ा पेड़ में चलाने परिशोधित लघुगणक समय है, लेकिन बुरी से बुरी हालत रैखिक समय। सबूत शांत कर रहे हैं।
  • Fibonacci heaps, जो परिशोधित निरंतर समय में प्राथमिकता कतार संचालन के अधिकांश प्रदर्शन, इस प्रकार Dijkstra's algorithm और अन्य समस्याओं के क्रम में सुधार। टेढ़ा के पेड़ के साथ के रूप में, slick "संभावित फ़ंक्शन" सबूत हैं।
  • रैनार्ड समय उलटा एक्शन में न्यूनतम फैलाने वाले पेड़ों की गणना करने के लिए बर्नार्ड चाज़ेल के एल्गोरिदम स्थायी समय एल्गोरिथ्म soft heaps पारंपरिक priority queue का एक संस्करण का उपयोग करता है, कि कुछ "भ्रष्टाचार" होते हैं और हो सकता है प्रश्नों सही ढंग से उत्तर नहीं हो सकता है को छोड़कर।
  • एमएसटी के विषय पर: एक इष्टतम एल्गोरिदम given by Pettie and Ramachandran रहा है, लेकिन हम चलने का समय नहीं जानते!
  • यादृच्छिक एल्गोरिदम के बहुत सारे रुचि विश्लेषण किया है।मैं केवल एक उदाहरण का उल्लेख करूंगा: डेलाउने त्रिभुज की गणना ओ (एन लॉग एन) समय में incrementally adding points द्वारा की जा सकती है; विश्लेषण स्पष्ट रूप से जटिल है, हालांकि मैंने इसे नहीं देखा है।
  • एल्गोरिदम का उपयोग करने वाले "बिट चाल" साफ है, उदा हो सकता है sorting in O(n log log n) समय (और रैखिक स्थान) - यह सही है, यह तुलनात्मक से अधिक का उपयोग करके ओ (एन लॉग एन) बाधा तोड़ता है।
  • Cache-oblivious algorithms अक्सर दिलचस्प विश्लेषण किया है। उदाहरण के लिए, cache-oblivious priority queues इतने पर (पेज 3 देखें) लॉग इन करें लॉग इन करें n आकार के स्तरों n का उपयोग, एन 2/3, एन 4/9, और।
  • (स्टेटिक) रेंज-सरणी पर न्यूनतम प्रश्न साफ ​​हैं। standard proof कमी के संबंध में अपनी सीमा का परीक्षण करती है: सीमा-न्यूनतम प्रश्नों पेड़ों में कम से कम आम पूर्वज है, जो एक विशिष्ट तरह सरणियों के में एक सीमा-न्यूनतम प्रश्नों करने के लिए कम बारी में है करने के लिए कम है। अंतिम चरण भी एक प्यारा चाल का उपयोग करता है।
2

2 डी का आदेश दिया खोज विश्लेषण काफी रोचक है। आपके पास एनएक्सएन संख्याओं की 2-आयामी संख्यात्मक सरणी है जहां प्रत्येक पंक्ति को बाएं-दाएं क्रमबद्ध किया गया है और प्रत्येक कॉलम को ऊपर-नीचे क्रमबद्ध किया गया है। कार्य सरणी में एक विशेष संख्या को खोजने के लिए है।

पुनरावर्ती एल्गोरिदम: बीच में तत्व लेने, लक्ष्य संख्या के साथ तुलना, सरणी (तुलना के परिणाम के आधार पर) के एक चौथाई त्यागें, remainig 3 तिमाहियों के रिकर्सिवली लागू काफी विश्लेषण करने के लिए दिलचस्प है।

0

शैल तरह। विभिन्न वृद्धि के साथ कई प्रकार के रूप हैं, जिनमें से अधिकांश को complexity analysis simpler बनाने के अलावा कोई लाभ नहीं है।

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