ओ (logn) हमेशा एक पेड़ है?

वोट
6

हम हमेशा एक (बाइनरी खोज) पेड़ पर कार्रवाई को देखने के ओ (logn) सबसे ज्यादा मामले चल रहे हैं समय की वजह से पेड़ ऊंचाई logn है गया है। मुझे आश्चर्य है अगर हमें बताया जाता है एक एल्गोरिथ्म logn, जैसे मीटर + nlogn के एक समारोह के रूप में समय से चल रहा है कि, हम निष्कर्ष निकाल सकते यह एक (संवर्धित) पेड़ को शामिल करना चाहिए?

संपादित करें: अपनी टिप्पणी के लिए धन्यवाद, मैं अब एहसास विभाजित विजय और द्विआधारी पेड़ नेत्रहीन / धारणात्मक तो समान हैं। मैं दोनों के बीच एक कनेक्शन कभी नहीं किया था। लेकिन मैं एक मामले के बारे में सोच जहां ओ (logn) एक विभाजन विजय नहीं है algo जो एक पेड़ है जो एक BST / AVL / लाल-काले पेड़ की कोई संपत्ति है शामिल है।

यही कारण है कि ढूँढें / संघ संचालन के साथ संबंध तोड़ना सेट डेटा संरचना, जिसका चलने का समय हे है (N + MlogN), एन किया जा रहा तत्वों और एम ढूँढें संचालन की संख्या का # के साथ।

कृपया मुझे बताएं कि मैं sth याद कर रहा हूँ, लेकिन मैं यह नहीं देख सकते हैं कि विभाजन विजय खेलने में यहाँ आता है। मैं सिर्फ यह (असंबंधित समूह) मामले यह कोई BST संपत्ति और एक चलने का समय logn के एक समारोह किया जा रहा है के साथ एक पेड़ है कि में देखते हैं। तो मेरे सवाल क्यों / कारण है कि मैं इस मामले से एक सामान्यीकरण कर सकते हैं नहीं के बारे में है।

22/02/2010 को 05:25
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


7 जवाब

वोट
7

नहीं, आप भी बाइनरी एक क्रमबद्ध सरणी (उदाहरण के लिए) खोज सकते हैं। लेकिन इसके लिए मेरे शब्द नहीं लेते http://en.wikipedia.org/wiki/Binary_search_algorithm

22/02/2010 को 05:26
का स्रोत उपयोगकर्ता

वोट
3

एक काउंटर उदाहरण के रूप में:

given array 'a' with length 'n'
y = 0
for x = 0 to log(length(a))
    y = y + 1
return y

रन टाइम हे (लॉग (एन)), लेकिन कोई पेड़ यहाँ है!

22/02/2010 को 05:28
का स्रोत उपयोगकर्ता

वोट
0

लघुगणक समय देने के लिए एल्गोरिदम रहे हैं आमतौर पर द्विआधारी पेड़ पर कार्रवाई में पाया।

ओ (logn) के उदाहरण हैं:

  • एक द्विआधारी खोज या एक संतुलित खोज पेड़ के साथ एक क्रमबद्ध सरणी में एक आइटम ढूँढना।

  • द्विभाजन द्वारा एक हल कर इनपुट सरणी में एक मूल्य को फिर से देखें।

22/02/2010 को 05:40
का स्रोत उपयोगकर्ता

वोट
7

क्या आपके पास वास्तव में पीछे की ओर है। O(lg N)आम तौर पर फूट डालो और जीत एल्गोरिथ्म किसी प्रकार का मतलब है, और फूट डालो और जीत को लागू करने से एक आम तरीका है एक द्विआधारी पेड़ है। जबकि द्विआधारी पेड़ सभी विभाजन और जीत एल्गोरिदम का एक बड़ा सबसेट हैं, का एक सबसेट वैसे भी कर रहे हैं।

कुछ मामलों में, आप अन्य विभाजन को बदलने और (पहले से ही यह दावा करते हुए एक द्विआधारी खोज के समान है पर एक प्रयास बना दिया है एक और जवाब पर जैसे टिप्पणियाँ) काफी द्विआधारी पेड़ में सीधे एल्गोरिदम को जीत सकते हैं। बस एक और स्पष्ट उदाहरण के लिए, हालांकि, बहु तरफ़ा पेड़ (जैसे एक बी पेड़, B + ट्री या बी * पेड़), स्पष्ट रूप से एक पेड़ बस के रूप में स्पष्ट रूप से है, जबकि नहीं एक द्विआधारी पेड़।

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

22/02/2010 को 06:45
का स्रोत उपयोगकर्ता

वोट
2

जवाब नहीं है। एक क्रमबद्ध सरणी के द्विआधारी खोज है O(log(n))

22/02/2010 को 06:48
का स्रोत उपयोगकर्ता

वोट
0

हे के रूप में (लॉग (एन)) केवल एक ऊपरी भी बाध्य सभी हे (1) एल्गोरिदम की तरह है function (a, b) return a+b;हालत को संतुष्ट।

लेकिन मैं सभी थीटा (लॉग (एन)) इस बात से सहमत करने के लिए एल्गोरिदम थोड़े पेड़ एल्गोरिदम की तरह लग रहे या कम से कम एक पेड़ से निकाला जा सकता है।

22/02/2010 को 07:26
का स्रोत उपयोगकर्ता

वोट
0

संक्षिप्त जवाब:

सिर्फ इसलिए कि एक एल्गोरिथ्म लॉग (एन) ने अपने विश्लेषण के भाग के रूप है मतलब नहीं है कि एक पेड़ शामिल है। उदाहरण के लिए, निम्नलिखित एक बहुत ही सरल एल्गोरिथ्म हैO(log(n)

for(int i = 1; i < n; i = i * 2)
  print "hello";

आप देख सकते हैं, कोई पेड़ शामिल किया गया था। जॉन, भी कैसे द्विआधारी खोज एक क्रमबद्ध सरणी पर किया जा सकता पर एक अच्छा उदाहरण प्रदान करता है। ये दोनों हे लेने (लॉग (एन)) समय है, और वहाँ अन्य कोड उदाहरण है कि या बनाया जा सकता है संदर्भित कर रहे हैं। तो asymptotic समय जटिलता के आधार पर अनुमान नहीं है, कोड को देखो निश्चित रूप से जानना।

पेड़ों पर अधिक:

सिर्फ इसलिए कि एक एल्गोरिथ्म "पेड़" शामिल संकेत नहीं करता है O(logn)या तो। आप पेड़ के प्रकार और कैसे आपरेशन पेड़ को प्रभावित करता है पता करने की जरूरत।

कुछ उदाहरण:

  • उदाहरण 1)

सम्मिलित करना या खोज के निम्नलिखित असंतुलित पेड़ होगा O(n)

यहाँ छवि विवरण दर्ज

  • उदाहरण 2)

सम्मिलित करना या खोज निम्नलिखित संतुलित पेड़ दोनों से O(log(n))

बैलेंस्ड बाइनरी ट्री:

यहाँ छवि विवरण दर्ज

डिग्री 3 की बैलेंस्ड ट्री:

यहाँ छवि विवरण दर्ज

अतिरिक्त टिप्पणियां

पेड़, तो आप एक तरीका मौजूद नहीं है का उपयोग कर रहे "शेष" वहाँ एक अच्छा मौका है कि अपने संचालन हो जाएगा की तुलना में करने के लिए O(n)समय नहीं O(logn)। आप पेड़ों कि आत्म संतुलन कर रहे हैं का उपयोग करते हैं, तो सामान्य रूप से अधिक समय लग आवेषण, पेड़ों के संतुलन सामान्य रूप से डालने के चरण के दौरान होते हैं।

27/04/2016 को 00:55
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more