আপডেট: এই যোগদানের ক্রিয়াকলাপটির ভুল সম্পর্কে আপডেটের জন্য নীচে দেখুন
এখানে একটি সম্ভাব্য সমাধানের একটি খুব রুক্ষ স্কেচ দেওয়া হয়েছে:
আমি মনে করি আমার এক ধরণের এলোমেলোভাবে ভারসাম্যযুক্ত বি + - ট্রি ব্যবহার করে এই সমস্যার সমাধান হতে পারে। ট্রাপগুলির মতো, এই গাছগুলির একটি অনন্য উপস্থাপনা রয়েছে। ট্রাপগুলির বিপরীতে, তারা কয়েকটি কীগুলি একাধিকবার সঞ্চয় করে। বেন্ট এট আল এর "বায়াসড সার্চ ট্রি" থেকে প্রতিটি কী কেবলমাত্র সর্বোচ্চ (যেটি মূলের নিকটে-মূলের মধ্যে দেখা যায়) স্তরে সংরক্ষণ করার কৌশলটি ব্যবহার করা সম্ভব হবে might
অর্ডারযুক্ত অনন্য মানের জন্য একটি গাছ প্রথমে প্রতিটি মানকে বিটের স্ট্রিমের সাথে যুক্ত করে তৈরি করা হয়, ট্র্যাপের প্রতিটি মান যেভাবে একটি অগ্রাধিকারের সাথে যুক্ত similar গাছের প্রতিটি নোডে কী এবং কিছুটা প্রবাহ থাকে। পাতাহীন নোডগুলিতে এই নোডে মূলের গাছের উচ্চতা নির্দেশ করে এমন একটি প্রাকৃতিক সংখ্যা রয়েছে। অভ্যন্তরীণ নোডগুলিতে কোনও শূন্য-সংখ্যক শিশু থাকতে পারে। বি + ত্রিগুলির মতো, শিকড় থেকে কোনও পাতায় যাওয়ার প্রতিটি অ-স্ব-ছেদকৃত পথ একই দৈর্ঘ্য।
প্রতিটি অভ্যন্তরীণ নোড (যেমন বি + + -trees) বৃহত্তম কী আছে ট তার বংশধর পাতার। প্রতিটি প্রাকৃতিক সংখ্যা উপস্থিত রয়েছে আমি গাছ এ রুট উচ্চতা ইঙ্গিত বনাম , এবং সঙ্গে যুক্ত বিট প্রবাহ ট থেকে আমি + + 1 ম অনওয়ার্ড বিট। গাছ এ রুট প্রতিটি চাবি যদি বনাম তার বিট প্রবাহে একই প্রথম বিট আছে, প্রতিটি শিশু বনাম পাতার নেই এবং আমি হয় 1 । অন্যথায়, ভি এর বাচ্চারা অভ্যন্তরীণ নোড যাগুলির কীগুলির সাথে যুক্ত বিট স্ট্রিমের একই আই বিট থাকে।vkivki+1vvi1vi
সম্পর্কিত বিট স্ট্রিমগুলির সাথে কীগুলির একটি বাছাই করা তালিকা থেকে একটি গাছ তৈরি করতে, প্রথমে কীগুলি তাদের স্ট্রিমের প্রথম বিটের উপর ভিত্তি করে সামঞ্জস্যপূর্ণ গ্রুপগুলিতে সংগ্রহ করুন। এই গ্রুপগুলির প্রত্যেকের জন্য, গ্রুপের বৃহত্তম কীটির কী এবং বিট স্ট্রিম সহ একটি পিতামাতার তৈরি করুন, তবে স্ট্রিমের প্রথম বিটটি এলিডিং করছে। দাদা-দাদি তৈরি করতে এখন নতুন পিতামাতার উপর একই গ্রুপিংয়ের পদ্ধতিটি করুন। কেবল একটি নোড অবধি অবিরত থাকুন; এই গাছের মূল।
নীচের কীগুলির (বিট স্ট্রিমের) তালিকা এবং নীচের গাছটি উপস্থাপন করে। বিট স্ট্রিমের উপসর্গগুলিতে, একটি '' ' মানে কিছুটা। এটি হ'ল, কোনও 'কী'র জন্য বিট স্ট্রিমটি প্রথম স্থানে 0 এর সাথে অন্যের মতো একই গাছ উত্পাদন করে, অন্য কোনও কী'র বিট স্ট্রিমটি পৃথক নয় বলে ধরে নিবে।
A 0...
B 00..
C 10..
D 0...
E 0011
F 1...
G 110.
H 0001
____H____
/ \
E H
| / \
__E__ G H
/ | \ | |
B C E G H
/ \ | / \ / \ |
A B C D E F G H
একটি নির্দিষ্ট অভ্যন্তরীণ নোডের প্রতিটি সন্তানের বিট স্ট্রিমের প্রথম স্থানে একই বিট থাকে। এটিকে পিতামাতার "রঙ" বলা হয় - 0 টি লাল, 1 সবুজ। সন্তানের বিট স্ট্রিমের প্রথম বিটের উপর নির্ভর করে একটি "স্বাদ" থাকে - 0 চেরি, 1 পুদিনা। পাতায় স্বাদ আছে, তবে রঙ নেই। সংজ্ঞা অনুসারে, একটি চেরি নোডের সবুজ পিতা থাকতে পারে না, এবং একটি পুদিনা নোডের লাল পিতা থাকতে পারে না।
n21−n
এবং প্রত্যাশিত মান হ'ল(n+1)/2। সব জন্যএন≥2, এই≤3(n−1i−1)(n+1)/2n≥2, তাই আশা করা গাছ উচ্চতারহে(LGএন)।≤34nO(lgn)
সমান উচ্চতার দুটি গাছে যোগদান করতে, প্রথমে তাদের শিকড়গুলি একই রঙের কিনা তা পরীক্ষা করে দেখুন। যদি তা হয় তবে বাম রুট থেকে তার ডান-সর্বাধিক শিশু এবং ডান রুট থেকে তার বাম-সর্বাধিক শিশু বিচ্ছিন্ন করুন, তবে পুনরাবৃত্তভাবে এই দুটি গাছে যোগ দিন। ফলগুলি একই উচ্চতার গাছ বা একটি লম্বা হবে যেহেতু গাছগুলির একই স্বাদ থাকে (নীচে দেখুন)। যদি দুটি গাছে পুনরাবৃত্তভাবে যোগদানের ফলাফলটি দুটি বিচ্ছিন্ন শিশুদের মতো একই উচ্চতা হয় তবে এটির আগে একটি বাম মূলের অবশিষ্ট বাচ্চাদের এবং তার পরে ডান মূলের বাকী বাচ্চাদের সাথে একটি মূলের মধ্যবর্তী সন্তান হিসাবে পরিণত করুন। যদি এটি 1 এর চেয়ে বেশি লম্বা হয় তবে এর আগে বামমূলের বাকী বাচ্চাদের এবং তার পরে ডান মূলের বাকী বাচ্চাদের সাথে তার বাচ্চাদের একটি শিকড়ের মধ্যম সন্তান তৈরি করুন। যদি শিকড়গুলির বিভিন্ন রঙ থাকে তবে তাদের একই স্বাদ আছে কিনা তা পরীক্ষা করে দেখুন। তারা যদি করে, ডান মূলের কী এবং বিট প্রবাহ সহ তাদের প্রথম বিটটি এলিড করে তাদের একটি নতুন পিতামাতাকে দিন। যদি তারা তা না করে তবে প্রতিটি রুটকে পুরানো মূলের কী এবং বিট প্রবাহ (প্রতিটি প্রথম বিট এলিডিং) দিয়ে নতুন পিতামাতাকে দিন, তারপরে পুনরাবৃত্তভাবে সেই গাছগুলিতে যোগ দিন।
1/21/2O(1)1/4, এবং পরবর্তী পুনরাবৃত্ত কলগুলি সর্বদা বিভিন্ন বর্ণের গাছে থাকে তাই একই বিশ্লেষণ প্রযোজ্য।
1/2O(1)
O(1)
a 01110
b 110..
c 10...
d 00000
দ্বারা নির্মিত গাছটির [a,b]
উচ্চতা 2 হয়, দ্বারা নির্মিত গাছটির [c,d]
উচ্চতা 2 হয়, এবং তৈরি গাছের joinEqual (tree [a,b]) (tree [c,d])
উচ্চতা 3 হয় তবে, তৈরি গাছটির [a,b,c,d]
উচ্চতা 5 হয়।
এই ত্রুটিটি খুঁজে পেতে আমি এখানে কোডটি ব্যবহার করেছি ।