গাদা এবং বিএসটি-র মধ্যে পার্থক্য কী?
কখন গাদা ব্যবহার করবেন এবং কখন বিএসটি ব্যবহার করবেন?
যদি আপনি উপাদানগুলি বাছাই করা ফ্যাশনে পেতে চান, তবে স্তরের চেয়ে বিএসটি আরও ভাল?
গাদা এবং বিএসটি-র মধ্যে পার্থক্য কী?
কখন গাদা ব্যবহার করবেন এবং কখন বিএসটি ব্যবহার করবেন?
যদি আপনি উপাদানগুলি বাছাই করা ফ্যাশনে পেতে চান, তবে স্তরের চেয়ে বিএসটি আরও ভাল?
উত্তর:
সারসংক্ষেপ
Type BST (*) Heap
Insert average log(n) 1
Insert worst log(n) log(n) or n (***)
Find any worst log(n) n
Find max worst 1 (**) 1
Create worst n log(n) n
Delete worst log(n) log(n)
এই টেবিলের সমস্ত গড় সময়গুলি সন্নিবেশ করা বাদ দিয়ে তাদের খারাপ সময়গুলির সমান।
*
: এই উত্তরের সর্বত্র, বিএসটি == ভারসাম্য বিএসটি, যেহেতু ভারসাম্যহীন অ্যাসেম্পোটোটিকভাবে সফল হয়**
: এই উত্তরে একটি তুচ্ছ পরিবর্তন ব্যবহার করে ব্যাখ্যা করা হয়েছে***
: log(n)
পয়েন্টার গাছের গাদা n
জন্য, গতিশীল অ্যারে হিপ জন্যএকটি বিএসটি-তে বাইনারি হ্যাপের সুবিধা
বাইনারি হিপগুলিতে গড় সময় সন্নিবেশ হ'ল O(1)
বিএসটি-র জন্য O(log(n))
। এটি হ'ল হত্যার বৈশিষ্ট্য।
এছাড়াও অন্যান্য স্তূপগুলি রয়েছে যা ফিবোনাচি হিপগুলিরO(1)
মতো এমোরাইজড (শক্তিশালী) পৌঁছায় এবং এমনকি ব্রোডাল কাতারের মতো নিকৃষ্টতম পরিস্থিতিও দেখা যায় , যদিও এটি অ-অ্যাসিম্পোটিক পারফরম্যান্সের কারণে ব্যবহারিক নাও হতে পারে: ফিবোনাচি হিপস বা ব্রোডাল সারিগুলি কোথাও অনুশীলনে ব্যবহৃত হয়?
বাইনারি হ্যাপগুলি গতিশীল অ্যারে বা পয়েন্টার ভিত্তিক গাছগুলির উপরে দক্ষতার সাথে প্রয়োগ করা যায়, কেবলমাত্র পয়েন্টার ভিত্তিক গাছ ST সুতরাং আমরা যদি মাঝেমধ্যে পুনরায় আকারের বিলম্বকে সামর্থ করতে পারি তবে স্তূপের জন্য আমরা আরও বেশি স্থানের দক্ষ অ্যারে বাস্তবায়ন বেছে নিতে পারি।
বাইনারি গাদা সৃষ্টি হয় O(n)
সবচেয়ে খারাপ ক্ষেত্রে , O(n log(n))
বিএসটি জন্য।
বাইনারি হিপগুলির উপরে বিএসটি-র সুবিধা
স্বেচ্ছাসেবী উপাদানগুলির জন্য অনুসন্ধান করা হয় O(log(n))
। এই বিএসটিগুলির হত্যাকারী বৈশিষ্ট্য।
গাদা জন্য, এটি O(n)
সাধারণত, বৃহত্তম উপাদান ছাড়া যা হয় O(1)
।
বিএসটি-র উপর গাদা করার "ভুয়া" সুবিধা
গাদা O(1)
সর্বোচ্চ, বিএসটি সন্ধান করতে হয়O(log(n))
।
এটি একটি সাধারণ ভুল ধারণা, কারণ বৃহত্তম উপাদানটির উপর নজর রাখতে কোনও বিএসটি সংশোধন করা তাত্পর্যপূর্ণ এবং যখনই এই উপাদানটি পরিবর্তিত হতে পারে আপডেট করুন: অপসারণের পরে একটি বৃহত্তর একটি অদলবদল সন্নিবেশ করার পরে, দ্বিতীয় বৃহত্তমটি খুঁজে পাওয়া যায়। হিপ অপারেশন অনুকরণ করতে আমরা বাইনারি অনুসন্ধান ট্রি ব্যবহার করতে পারি? ( ইয়েও উল্লেখ করেছেন )
প্রকৃতপক্ষে, এটি বিএসটিগুলির তুলনায় গাদাগুলির একটি সীমাবদ্ধতা : একমাত্র দক্ষ অনুসন্ধান এটি বৃহত্তম উপাদানটির জন্য।
গড় বাইনারি হ্যাপ সন্নিবেশ করা হয় O(1)
সূত্র:
স্বজ্ঞাত যুক্তি:
বাইনারি হিপগুলিতে, প্রদত্ত সূচকে মান বাড়ানোও O(1)
একই কারণে। তবে আপনি যদি এটি করতে চান তবে সম্ভবত হিপ অপারেশনগুলিতে আপনি অতিরিক্ত সূচি আপ-টু-ডেট রাখতে চান আপনি কীভাবে মিনিট-হিপ ভিত্তিক অগ্রাধিকার সারির জন্য ও (লগন) হ্রাস-কী অপারেশনটি প্রয়োগ করবেন? উদাহরণস্বরূপ Dijkstra জন্য। কোনও অতিরিক্ত সময় ব্যয় ছাড়াই সম্ভব।
জিসিসি সি ++ স্ট্যান্ডার্ড লাইব্রেরি রিয়েল হার্ডওয়ারে বেনমার্ক .োকান
আমি + োকানোর সময়গুলি সম্পর্কে সঠিক কিনা তা দেখার জন্য আমি সি ++ std::set
( লাল-কালো গাছ বিএসটি ) এবং std::priority_queue
( গতিশীল অ্যারে হিপ ) সন্নিবেশকে বেঞ্চমার্ক করেছি এবং আমি এটি পেয়েছি:
তাই পরিষ্কার:
হিপ সন্নিবেশ সময় মূলত ধ্রুবক।
আমরা স্পষ্টতই গতিশীল অ্যারে পুনরায় আকার পয়েন্টগুলি দেখতে পারি। যেহেতু আমরা উপরের সমস্ত সিস্টেমের গোলমালে যে কোনও কিছু দেখতে সক্ষম হতে প্রতি 10 কে সন্নিবেশকে গড় গড় দিচ্ছি , সেই শৃঙ্গগুলি বাস্তবে দেখানো থেকে 10k গুণ বেশি বড়!
জুমযুক্ত গ্রাফটি মূলত কেবল অ্যারে পুনরায় আকারের পয়েন্টগুলি বাদ দেয় এবং দেখায় যে প্রায় সমস্ত সন্নিবেশ 25 ন্যানো সেকেন্ডের আওতায় পড়ে।
বিএসটি লোগারিথমিক ith সমস্ত serোকানো গড় হ্যাপ সন্নিবেশের তুলনায় অনেক ধীর er
বিএসটি বনাম হ্যাশম্যাপের বিশদ বিশ্লেষণ এখানে: সিডি + ম্যাপের মধ্যে স্ট্যান্ডার্ড :: ম্যাপের মধ্যে কোন ডেটা কাঠামো রয়েছে?
জিসি সি ++ স্ট্যান্ডার্ড লাইব্রেরি রত্ন 5 এ মাপদণ্ডের বেঞ্চমার্ক
জেম 5 একটি সম্পূর্ণ সিস্টেম সিমুলেটর, এবং তাই এর সাথে একটি অসীম নির্ভুল ঘড়ি সরবরাহ করে m5 dumpstats
। তাই আমি পৃথক প্রবেশের সময় নির্ধারণের জন্য এটি ব্যবহার করার চেষ্টা করেছি।
ব্যাখ্যা:
গাদা এখনও স্থির, তবে এখন আমরা আরও বিশদে দেখতে পাচ্ছি যে কয়েকটি লাইন রয়েছে এবং প্রতিটি উচ্চতর লাইনই বেশি বিচ্ছিন্ন।
এটি উচ্চতর এবং উচ্চতর সন্নিবেশগুলির জন্য মেমরি অ্যাক্সেসের বিলম্বগুলির সাথে সমান হতে হবে।
টুডো আমি বিএসটিকে সম্পূর্ণরূপে ব্যাখ্যা করতে পারি না কারণ এটি এত লোগারিথিক এবং কিছুটা বেশি ধ্রুবক লাগে না।
এই বৃহত্তর বিশদটির সাথে আমরা দেখতে পাচ্ছি কয়েকটি স্বতন্ত্র লাইনও দেখতে পাবে তবে তারা যেটি উপস্থাপন করে তা আমি নিশ্চিত নই: আমি নীচের লাইনটি আরও পাতলা হওয়ার প্রত্যাশা করব, যেহেতু আমরা উপরের নীচের অংশটি সন্নিবেশ করবো?
একটি আড়াল H64 এইচপিআই সিপিইউতে এই বিল্ড্রুট সেটআপের সাথে বেঞ্চমার্কযুক্ত ।
বিএসটি কোনও অ্যারেতে দক্ষতার সাথে প্রয়োগ করা যায় না
গাদা অপারেশনগুলিতে কেবল একটি গাছের ডালকে বুদবুদ করতে বা নীচে ফেলা প্রয়োজন, সুতরাং O(log(n))
সবচেয়ে খারাপ পরিস্থিতি অদলবদল,O(1)
গড়।
একটি বিএসটি ভারসাম্য বজায় রাখার জন্য গাছের আবর্তন প্রয়োজন, যা অন্য একটির জন্য শীর্ষ উপাদানকে পরিবর্তন করতে পারে এবং পুরো অ্যারেটিকে চারদিকে ঘোরাতে হবে (O(n)
) ।
গাদা একটি অ্যারে দক্ষতার সাথে প্রয়োগ করা যেতে পারে
পিতামাতার এবং শিশুদের সূচকগুলি এখানে প্রদর্শিত হিসাবে বর্তমান সূচি থেকে গণনা করা যেতে পারে ।
বিএসটি-র মতো কোনও ভারসাম্যমূলক ক্রিয়াকলাপ নেই।
মিনিট মুছুন সবচেয়ে উদ্বেগজনক অপারেশন কারণ এটি শীর্ষে ডাউন হতে হয়। তবে এখানে বর্ণিত হিসাবে এটি সর্বদা স্তূপের একটি শাখা "পেরকোলেট করে" করা যায় । এটি একটি ও (লগ (এন)) সবচেয়ে খারাপ ক্ষেত্রে বাড়ে, যেহেতু গাদা সর্বদা ভাল সুষম থাকে।
আপনি মুছে ফেলা প্রত্যেকটির জন্য যদি একটি একক নোড inোকাচ্ছেন তবে আপনি অ্যাসিমেটটিক ও (1) গড় সন্নিবেশের সুবিধাটি হারাবেন যা মোছাগুলি মুছে ফেলা হবে, এবং আপনি পাশাপাশি একটি বিএসটি ব্যবহার করতে পারেন। ডিজকস্ট্রা প্রতিটি অপসারণের জন্য নোডগুলি বেশ কয়েকবার আপডেট করে, তাই আমরা ভাল আছি।
গতিশীল অ্যারে হ্যাপস বনাম পয়েন্টার ট্রি হ্যাপস
পয়েন্টার হ্যাপগুলির শীর্ষে গাদা দক্ষতার সাথে প্রয়োগ করা যেতে পারে: দক্ষ পয়েন্টার-ভিত্তিক বাইনারি হ্যাপ বাস্তবায়ন করা কি সম্ভব?
গতিশীল অ্যারে বাস্তবায়ন আরও স্থান দক্ষ। মনে করুন যে প্রতিটি গাদা উপাদানটিতে একটিতে কেবলমাত্র একটি পয়েন্টার রয়েছে struct
:
গাছ প্রয়োগের জন্য প্রতিটি উপাদানের জন্য তিনটি পয়েন্টার সংরক্ষণ করতে হবে: পিতামাতা, বাম শিশু এবং ডান শিশু। সুতরাং মেমরির ব্যবহার সর্বদা হয় 4n
(3 টি ট্রি পয়েন্টার + 1 struct
পয়েন্টার)।
বৃক্ষ বিএসটিগুলিতে আরও ভারসাম্যপূর্ণ তথ্যের প্রয়োজন হবে, যেমন কালো-লাল-নেস।
ডায়নামিক অ্যারে বাস্তবায়ন 2n
দ্বিগুণ হওয়ার ঠিক পরে আকার হতে পারে । সুতরাং এটি হতে চলেছে 1.5n
।
অন্যদিকে, গাছের স্তূপগুলি সবচেয়ে খারাপ ক্ষেত্রে সন্নিবেশ করায় কারণ ব্যাকিং গতিশীল অ্যারে এর আকার দ্বিগুণ করার জন্য অনুলিপি করা সবচেয়ে O(n)
খারাপ ক্ষেত্রে লাগে , অন্যদিকে গাছের স্তূপ প্রতিটি নোডের জন্য নতুন নতুন বরাদ্দ করে।
তবুও, ব্যাকিং অ্যারে দ্বিগুণ হওয়া O(1)
সূচিত হয়েছে, সুতরাং এটি সর্বোচ্চ বিলম্বিত বিবেচনায় নেমে আসে। এখানে উল্লেখ করা হয়েছে ।
দর্শন
বিএসটিগুলি পিতা বা মাতা এবং সমস্ত বংশধরদের মধ্যে একটি বৈশ্বিক সম্পত্তি বজায় রাখে (ছোট ছোট, ডানদিকে বড়)।
একটি বিএসটি-র শীর্ষ নোডটি মাঝারি উপাদান, যা বজায় রাখতে বিশ্বব্যাপী জ্ঞান প্রয়োজন (কতগুলি ছোট এবং বৃহত্তর উপাদান রয়েছে তা জেনে)।
এই বিশ্বব্যাপী সম্পত্তিটি রক্ষণাবেক্ষণ করতে (লগ এন সন্নিবেশ করা) আরও ব্যয়বহুল, তবে আরও শক্তিশালী অনুসন্ধান (লগ এন অনুসন্ধান) দেয়।
গাদা পিতামাতা এবং প্রত্যক্ষ বাচ্চাদের (পিতামাতাদের> শিশুদের) মধ্যে একটি স্থানীয় সম্পত্তি বজায় রাখে।
একটি গাদা শীর্ষ নোড বড় উপাদান, যা শুধুমাত্র বজায় রাখতে স্থানীয় জ্ঞান প্রয়োজন (আপনার পিতামাতাকে জেনে)।
বিএসটি বনাম হিপ বনাম হাশম্যাপের তুলনা:
বিএসটি: হয় হয় যুক্তিসঙ্গত হতে পারে:
গাদা: একটি বাছাই করার মেশিন। একটি দক্ষ অর্ডারযুক্ত সেট হতে পারে না, কারণ আপনি কেবলমাত্র ছোট / বৃহত্তম উপাদান দ্রুত পরীক্ষা করতে পারেন।
হ্যাশ মানচিত্র: কেবল একটি আনর্ডারড সেট হতে পারে, দক্ষ বাছাই করার মেশিন নয়, কারণ হ্যাশিং কোনও ক্রম মেশানো।
দ্বি-সংযুক্ত তালিকা list
দ্বিগুণ সংযুক্ত তালিকাটি স্তূপের উপসেট হিসাবে দেখা যেতে পারে যেখানে প্রথম আইটেমটির সর্বাধিক অগ্রাধিকার রয়েছে, সুতরাং আসুন এখানেও তাদের তুলনা করুন:
O(1)
যেহেতু আমাদের আইটেমগুলিতে পয়েন্টার রয়েছে সেহেতু সবচেয়ে খারাপ পরিস্থিতি এবং আপডেটটি সত্যই সহজO(1)
গড়, লিঙ্কযুক্ত তালিকার চেয়ে খারাপ। আরও সাধারণ সন্নিবেশ অবস্থানের জন্য ট্রেড অফ।O(n)
উভয়ের জন্যএটির জন্য ব্যবহারের ক্ষেত্রে হিপটির কীটি বর্তমান টাইমস্ট্যাম্প থাকে: সেক্ষেত্রে নতুন এন্ট্রি সর্বদা তালিকার শুরুতে যায়। সুতরাং আমরা এমনকি পুরো টাইমস্ট্যাম্পটি সম্পূর্ণরূপে ভুলে যেতে পারি এবং কেবলমাত্র অগ্রাধিকার হিসাবে তালিকায় অবস্থানটি রাখি।
এটি একটি এলআরইউ ক্যাশে প্রয়োগ করতে ব্যবহার করা যেতে পারে । শুধু Dijkstra মত গাদা অ্যাপ্লিকেশনের জন্য , আপনি তালিকার সংশ্লিষ্ট নোড চাবিকাঠি থেকে একটি অতিরিক্ত hashmap রাখা, যা নোড দ্রুত আপডেট করার জন্য খুঁজতে চান হবে।
বিভিন্ন ভারসাম্য বিএসটি এর তুলনা
যদিও অ্যাসিম্পটোটিক সন্নিবেশ করানো হয় এবং সাধারণভাবে "ভারসাম্য বিএসটি" হিসাবে শ্রেণীবদ্ধ করা সমস্ত ডেটা স্ট্রাকচারের জন্য সময় খুঁজে পাওয়া যায় যা আমি এখনও দেখতে পেয়েছি একই, বিভিন্ন বিবিএসটিতে বিভিন্ন ট্রেড-অফ রয়েছে। আমি এখনও এটি পুরোপুরি অধ্যয়ন করি নি, তবে এই ট্রেড-অফগুলি এখানে সংক্ষিপ্ত করা ভাল হবে:
আরো দেখুন
সি এস অনুরূপ প্রশ্ন: /cs/27860/whats-the-difference-between-a-binary-search-tree-and-a-binary-heap
হিপ কেবল গ্যারান্টি দেয় যে উচ্চ স্তরের উপাদানগুলি নিম্ন স্তরের উপাদানগুলির চেয়ে বেশি (সর্বোচ্চ-হিপ জন্য) বা আরও ছোট (মিনিট-হিপের জন্য), যেখানে বিএসটি আদেশ দেয় ("বাম" থেকে "ডানদিকে") guaran আপনি যদি সাজানো উপাদান চান তবে বিএসটি দিয়ে যান।
[1, 5, 9, 7, 15, 10, 11]
একটি বৈধ ন্যূনতম-হিপ উপস্থাপন করে তবে 7
স্তরটি 3 স্তর 2 এর চেয়ে ছোট 9
হয় a দর্শনীয়তার জন্য, উদাহরণস্বরূপ দেখুন স্তূপগুলির জন্য নমুনা উইকিপিডিয়া চিত্রের25
এবং 19
উপাদানগুলি । (এছাড়াও লক্ষ করুন যে উপাদানগুলির মধ্যে বৈষম্য সম্পর্ক কঠোর নয়, যেহেতু উপাদানগুলি অগত্যা অনন্য নয়))
কখন হিপ ব্যবহার করবেন এবং কখন বিএসটি ব্যবহার করবেন
গাদা findMin / findMax (এ উত্তম O(1)
,) যখন বিএসটি সময়ে ভাল সব খুঁজে বের করে ( O(logN)
)। সন্নিবেশ O(logN)
উভয় কাঠামোর জন্য। যদি আপনি কেবল ফাইন্ডমিন / ফাইন্ডম্যাক্সের (যেমন অগ্রাধিকার-সম্পর্কিত) যত্নশীল হন তবে গাদা দিয়ে যান। আপনি যদি সাজানো সবকিছু চান তবে বিএসটি দিয়ে যান।
এখান থেকে প্রথম কয়েকটি স্লাইডগুলি খুব পরিষ্কারভাবে বিষয়গুলি ব্যাখ্যা করে।
অন্যদের দ্বারা উল্লিখিত হিসাবে, হিপগুলি O findMin
বা findMax
(1) এ করতে পারে তবে একই ডেটা কাঠামো উভয়ই নয়। তবে আমি একমত নই যে ফাইন্ডমিন / ফাইন্ডম্যাক্সে হিপ ভাল। আসলে, একটি সামান্য পরিবর্তন করে, বিএসটি উভয় findMin
এবং findMax
ও (1) এ করতে পারে।
এই পরিবর্তিত বিএসটিতে আপনি যখনই কোনও অপারেশন করেন তখন সম্ভাব্যভাবে ডেটা কাঠামো সংশোধন করতে পারে মিনি নোড এবং সর্বোচ্চ নোডের উপর নজর রাখুন। উদাহরণস্বরূপ সন্নিবেশ ক্রিয়াকলাপটি আপনি সন্নিবেশ করা মানের চেয়ে ন্যূনতম মানটি বড় কিনা তা পরীক্ষা করতে পারেন, তারপরে সদ্য যুক্ত নোডকে ন্যূনতম মান নির্ধারণ করুন। একই কৌশল সর্বোচ্চ মান প্রয়োগ করা যেতে পারে। সুতরাং, এই বিএসটিতে এই তথ্য রয়েছে যা আপনি ও (1) এ এগুলি পুনরুদ্ধার করতে পারেন। (বাইনারি হিপ হিসাবে একই)
এই বিএসটিতে (ভারসাম্য বিএসটি), যখন আপনি pop min
বা pop max
, পরবর্তী ন্যূনতম মানটি ন্যূন নোডের উত্তরসূরী হয়, যখন পরবর্তী নূন্যতম মানটি নোডের পূর্বসূরী হয়। সুতরাং এটি ও (1) এ সঞ্চালিত হয়। তবে আমাদের গাছটিকে ভারসাম্য বজায় রাখা দরকার, এটি এখনও ও (লগ এন) চালিয়ে যাবে। (বাইনারি হিপ হিসাবে একই)
আমি নীচের মন্তব্যে আপনার চিন্তা শুনতে আগ্রহী হবে ধন্যবাদ :)
অনুরূপ প্রশ্নের ক্রস রেফারেন্স আমরা হিপ অপারেশন অনুকরণ করতে বাইনারি অনুসন্ধান ট্রি ব্যবহার করতে পারি? বিএসটি ব্যবহার করে হিপ অনুকরণের বিষয়ে আরও আলোচনার জন্য।
popMin
বা popMax
এটি নয়, তবে এটি ও (লগ এন) কারণ এটি একটি ভারসাম্যপূর্ণ বিএসটি হতে হবে যা প্রতিটি মুছার ক্রিয়াকলাপের ভারসাম্য বজায় রাখতে হবে। সুতরাং এটি বাইনারি হিপ হিসাবে একই popMin
বা popMax
যা হে (লগ এন) চালায়
একটি বাইনারি অনুসন্ধান ট্রি সংজ্ঞাটি ব্যবহার করে: যে প্রতিটি নোডের জন্য, এর বাম দিকে নোডের একটি কম মান (কী) থাকে এবং এর ডানদিকে নোডের একটি বৃহত্তর মান (কী) থাকে।
যেখানে গাদা হিসাবে, বাইনারি গাছের প্রয়োগ হচ্ছে নিম্নলিখিত সংজ্ঞাটি ব্যবহার করে:
যদি A এবং B নোড হয়, যেখানে বি A এর চাইল্ড নোড, তবে A এর মান (কী) অবশ্যই B.T এর মান (কী) এর চেয়ে বড় বা সমান হতে হবে, কী (A) ≥ কী (B) )।
http://wiki.answers.com/Q/Difference_between_binary_search_tree_and_heap_tree
আমি আমার পরীক্ষার জন্য আজ একই প্রশ্নে দৌড়েছি এবং আমি এটি সঠিকভাবে পেয়েছি। হাসি ... :)
হিপ এর উপরে বিএসটি এর আরেকটি ব্যবহার; একটি গুরুত্বপূর্ণ পার্থক্যের কারণে:
একটি স্তূপের উপর বিএসটি ব্যবহার : এখন, আসুন আমরা ফ্লাইটের অবতরণের সময় সংরক্ষণ করার জন্য একটি ডেটা স্ট্রাকচার ব্যবহার করি Le যদি ল্যান্ডিংয়ের সময়ের পার্থক্য 'ডি' এর চেয়ে কম হয় তবে আমরা অবতরণের জন্য ফ্লাইটের সময়সূচি করতে পারি না। এবং ধরে নিন যে অনেকগুলি ফ্লাইটের ডেটা স্ট্রাকচারে (বিএসটি বা হিপ) অবতরণের সময় নির্ধারণ করা হয়েছে।
এখন, আমরা অন্য ফ্লাইট যা অবতরণ করবে নির্দিষ্ট সময় নির্ধারণের জন্য চান টন । তাই, আমরা ক্যালকুলেট পার্থক্য প্রয়োজন টন (হওয়া উচিত> ঘ) তার উত্তরাধিকারী এবং পূর্বসুরী সঙ্গে। সুতরাং, আমরা এই জন্য একটি বিএসটি, যা এটি দ্রুত করে করতে হবে অর্থাত মধ্যে O (logn) যদি সুষম।
সম্পাদিত:
বিএসটি বাছাই করা ও (এন) সময়কে ক্রমযুক্ত ক্রমে (আন্ডার ট্র্যাভারসাল) মুদ্রণ করতে সময় লাগে, যখন হিপ ও (এন লগন) সময়ে এটি করতে পারে। হিপ ন্যূনতম উপাদানটি বের করে এবং অ্যারেটিকে পুনরায় সক্রিয় করে তোলে, যা এটি ও (এন লগন) সময়ে বাছাই করে তোলে।
from unsorted to sorted sequence. O(n) time for inorder traversal of a BST, which gives sorted sequence.
ঠিক আছে, বিএসটি-তে অরক্ষিত সিকোয়েন্স থেকে আমি কী (এন লগন) সময়ের চেয়ে কম সময়ের সাথে কী তুলনার ভিত্তিতে একটি পদ্ধতি জানি না, যা বিএসটিকে সিকোয়েন্স অংশে আধিপত্য করে। (যেখানে ও (এন) হিপ নির্মাণ রয়েছে)) আমি এটিকে ন্যায্য বিবেচনা করব (যদি অর্থহীন না হয়) অবধি অবিচ্ছিন্নতার কাছাকাছি থাকা এবং বিএসটিগুলি বাছাই করা state
হিপ কেবল গ্যারান্টি দেয় যে উচ্চ স্তরের উপাদানগুলি নিম্ন স্তরের উপাদানের তুলনায় বৃহত্তর (সর্বোচ্চ-হিপ জন্য) বা আরও ছোট (ন্যূনতম-হিপের জন্য)
আমি উপরের উত্তরটি পছন্দ করি এবং আমার মন্তব্যটি আমার প্রয়োজন এবং ব্যবহারের জন্য আরও নির্দিষ্ট করে রাখি। আমাকে n অবস্থানের তালিকাটি প্রতিটি অবস্থান থেকে নির্দিষ্ট বিন্দুর (0,0) দুরত্ব খুঁজে পেতে এবং তারপরে ছোট দূরত্বে থাকা am এর অবস্থানগুলি ফিরিয়ে আনতে হয়েছিল। আমি অগ্রাধিকার সারিতে ব্যবহৃত যা হিপ। দূরত্বগুলি খুঁজে পেতে এবং গাদা করার জন্য এটি আমাকে এন (লগ (এন)) এন-লোকেশন লগ (এন) প্রতিটি সন্নিবেশ করিয়েছিল। তারপরে স্বল্পতম দূরত্বে এম পাওয়ার জন্য এটি মি (লগ (এন)) মি-লোকেশন লগ (এন) হিপিং আপ মোছার জন্য নিল।
আমি যদি এটি বিএসটি দিয়ে করতে পারি তবে এটি আমাকে (এন) সবচেয়ে খারাপ ক্ষেত্রে সন্নিবেশ করিয়ে নিয়ে যেত। (প্রথম মানটি খুব ছোট এবং অন্য সমস্তটি ক্রমান্বয়ে দীর্ঘ এবং দীর্ঘতর হয় এবং গাছটি কেবল ডান বা বাম সন্তানের দিকে বিস্তৃত হয়) আরও ছোট ও ছোট ক্ষেত্রে। মিনিটটি O (1) সময় নিয়েছিল তবে আবার আমাকে ভারসাম্য বজায় রাখতে হবে। সুতরাং আমার পরিস্থিতি থেকে এবং উপরের সমস্ত উত্তর যা আমি পেয়েছি তা হ'ল আপনি যখন ন্যূনতম বা সর্বাধিক অগ্রাধিকার ভিত্তিতে মানগুলি পরে যান গাদা জন্য।