নিম্নলিখিত সমস্যাটি সমাধান করার সময় আমি বিভ্রান্ত হয়ে পড়েছি (1–3 প্রশ্ন)।
প্রশ্ন
একটি ডি- হিরি হিপ বাইনারি হিপগুলির মতো, তবে (একটি সম্ভাব্য ব্যতিক্রম সহ) নন-পাতাগুলি নোডগুলিতে 2 সন্তানের পরিবর্তে ডি বাচ্চা থাকে।
আপনি অ্যারেতে কীভাবে ডি- গিরির উপস্থাপন করবেন ?
N এবং d এর ক্ষেত্রে এন উপাদানগুলির একটি d -ary গাদা উচ্চতা কত ?
এক্সট্রা্যাক্ট-ম্যাক্সকে একটি ডি- মেরি সর্বাধিক হ্যাপে কার্যকর প্রয়োগ দিন । এর চলমান সময়টিকে ডি এবং এন এর ক্ষেত্রে বিশ্লেষণ করুন ।
ডি -রি সর্বাধিক হ্যাপে INSERT এর একটি কার্যকর বাস্তবায়ন দিন । এর চলমান সময়টিকে ডি এবং এন এর ক্ষেত্রে বিশ্লেষণ করুন ।
ইনক্রেস- কে ( এ , আই , কে ) এর একটি কার্যকর প্রয়োগ দিন , যা কে <এ [আই] = কে যদি একটি ত্রুটি চিহ্নিত করে এবং তারপরে ডি -ম্যাট্রিক্স হিপ কাঠামো যথাযথভাবে আপডেট করে । এর চলমান সময়টিকে ডি এবং এন এর ক্ষেত্রে বিশ্লেষণ করুন ।
আমার সমাধান
একটি অ্যারের দাও
Not আমার স্বরলিপিটি কিছুটা পরিশীলিত বলে মনে হচ্ছে। অন্য কোন সরল আছে?
যাক জ উচ্চতা উল্লেখ করে ঘ -ary গাদা।
মনে করুন যে গাদাটি সম্পূর্ণ ডি -ারি গাছ
এটি আমার বাস্তবায়ন:
EXTRACT-MAX(A) 1 if A.heapsize < 1 2 error "heap underflow" 3 max = A[1] 4 A[1] = A[A.heapsize] 5 A.heap-size = A.heap-size - 1 6 MAX-HEAPIFY(A, 1) 7 return max MAX-HEAPIFY(A, i) 1 assign depthk-children to AUX[1..d] 2 for k=1 to d 3 compare A[i] with AUX[k] 4 if A[i] <= AUX[k] 5 exchange A[i] with AUX[k] 6 k = largest 7 assign AUX[1..d] back to A[depthk-children] 8 if largest != i 9 MAX-HEAPIFY(A, (2+(1+d+d^2+..+d^{k-1})+(largest-1) )
ম্যাক্স-হেপিফাইয়ের চলমান সময়:
যেখানে গ আমি উল্লেখ করে খরচআমিউপরে -th লাইন।
EXTRACT-সর্বোচ্চ:
This এটি কি কার্যকর সমাধান? নাকি আমার সমাধানের মধ্যে কিছু ভুল আছে?
h = (log [nd−1+1])− 1
সুতরাং উচ্চতার জন্য আমরা উপরের ব্যাখ্যাটি সত্য বলে ধরে রাখছি না। এইচ = লগ [এনডি − 1 + 1] −1 = লগ [এনডি] -1 = লগ [এন] তবুও, গাছের উচ্চতাΘ(log(n)).
নোট হিসাবে লিখিত হয়েছে : লগ সর্বদা ডি-আরির স্তূপের জন্য বেস ডিতে থাকে ।