অগ্রাধিকারের সারির সুস্পষ্ট উত্তর ছাড়াও, কখন আমার প্রোগ্রামিং অ্যাডভেঞ্চারে গাদা কার্যকর হবে?
উত্তর:
যখনই আপনার সবচেয়ে বড় (বা ক্ষুদ্রতম) আইটেমটিতে তাত্ক্ষণিকভাবে অ্যাক্সেসের প্রয়োজন হবে তখন এটি ব্যবহার করুন, কারণ সেই আইটেমটি অ্যারে বা গাছের গোড়ায় সর্বদা প্রথম উপাদান হবে।
তবে অ্যারের বাকী অংশটি আংশিকভাবে বাছাই করা আছে। সুতরাং, তাত্ক্ষণিকভাবে অ্যাক্সেস কেবলমাত্র বৃহত্তম (ক্ষুদ্রতম) আইটেমটিতে সম্ভব। সন্নিবেশগুলি দ্রুত, সুতরাং আগত ইভেন্টগুলি বা ডেটাগুলি মোকাবেলা করার সর্বোত্তম উপায় এবং সর্বদা প্রথম / বৃহত্তমতম অ্যাক্সেস থাকতে পারে।
অগ্রাধিকার সারি, শিডিয়ুলার (যেখানে প্রথম দিকের জিনিসটি পছন্দসই রয়েছে) ইত্যাদি জন্য কার্যকর etc
হিপ এমন একটি গাছ যেখানে পিতামাতার নোডের মান তার বংশধর নোডের চেয়ে বড় is
আপনি যদি প্রথমে মূল নোডের সাথে গভীরতার সাথে রৈখিক ক্রমে সংরক্ষণ করা বাইনারি গাছ হিসাবে গাদা মনে করেন (তারপরে সেই নোডের বাচ্চারা, তারপরে সেই নোডের বাচ্চারা); তারপরে সূচক এন এর নোডের বাচ্চারা 2N + 1 এবং 2N + 2 এ রয়েছে। এই সম্পত্তিটি দ্রুত সূচি অনুসারে প্রবেশের অনুমতি দেয়। এবং যেহেতু স্তূপগুলি নোডগুলি অদলবদলের দ্বারা হেরফের করা হয় তাই এটি স্থানের মধ্যে বাছাইয়ের অনুমতি দেয়।
হ্যাপগুলি এমন স্ট্রাকচার যা হ'ল নূন্যতম বা সর্বাধিকের কাছে দ্রুত প্রবেশের অনুমতি দেয় ।
তবে কেন আপনি এটি চান? আপনি শুধু প্রতি এন্ট্রি পরীক্ষা পারে অ্যাড যদি এটা ক্ষুদ্রতম বা বৃহত্তম যাচ্ছে তা দেখার। এই ধীরে ধীরে আপনার সর্বদা সবচেয়ে ছোট বা সবচেয়ে বড় থাকে O(1)
।
উত্তরটি হ'ল কারণ গাদা আপনাকে সবচেয়ে ক্ষুদ্রতম বা বৃহত্তমটিকে টানতে দেয় এবং দ্রুতই নেক্সট সবচেয়ে ছোট বা বৃহত্তম জানতে পারে । এজন্য এটিকে অগ্রাধিকারের সারি বলা হয়।
মনে করুন আপনার কাছে এমন একটি হাসপাতাল রয়েছে যেখানে রোগীদের তাদের বয়সের উপর ভিত্তি করে অংশ নেওয়া হয়। প্রবীণরা সর্বদা প্রথমে উপস্থিত হন, সে যখনই সারিতে উঠেছে তখনই তা গুরুত্বপূর্ণ নয়।
আপনি কেবল প্রাচীনতমটির খোঁজ রাখতে পারবেন না কারণ আপনি যদি তাকে বাইরে টানেন তবে আপনি পরবর্তী প্রবীণটিকে জানেন না। এই হাসপাতালের সমস্যা সমাধানের জন্য, আপনি একটি সর্বাধিক গাদা প্রয়োগ করেছেন । সংজ্ঞা অনুসারে এই গাদাটি আংশিক অর্ডারযুক্ত। এর অর্থ আপনি রোগীদের তাদের বয়স অনুসারে বাছাই করতে পারবেন না তবে আপনি জানেন যে সবচেয়ে বয়স্ক ব্যক্তিরা সর্বদা শীর্ষে থাকে, তাই আপনি স্থির সময়ে কোনও রোগীকে বাইরে টেনে আনতে পারেন O(1)
এবং লগের সময় গাদা পুনরায় ভারসাম্য বজায় রাখতে পারেন O(log N)
।
মনে করুন আপনার কাছে পূর্ণসংখ্যার ক্রম রয়েছে এবং আপনি এটির ট্র্যাক রাখতে চান median
। মিডিয়ান হ'ল একটি নম্বর যা অর্ডার করা অ্যারের মাঝে থাকে।
উদাহরণ:
[1, 2, 5, 7, 23, 27, 31]
উপরের ক্ষেত্রে, 7
মিডিয়ান কারণ ছোট সংখ্যাযুক্ত অ্যারেটি [1, 2, 5]
বড় সংখ্যাযুক্তগুলির একই আকারের হয় [23, 27, 31]
। সাধারণত, অ্যারেতে একটি অদ্ভুত সংখ্যক উপাদান থাকে, তবে মাঝারিটি মাঝের 2 টি উপাদানের গাণিতিক গড় হয়, যেমন (5 + 7)/2
।
এখন, আপনি কিভাবে মিডিয়ানের খোঁজ রাখবেন? ২ টি হিপ থাকার পরে , বর্তমানের মধ্যকের চেয়ে ছোট সংখ্যার সমন্বিত এক মিনিটের হিপ এবং বর্তমানের মধ্যকের চেয়ে বড় সংখ্যাসমৃদ্ধ একটি সর্বাধিক হিপ। এখন, যদি এই স্তূপগুলি সর্বদা ভারসাম্যপূর্ণ হয় তবে 2 টি হ্যাপে একই সংখ্যক উপাদান থাকবে বা একটিতে অন্যটির চেয়ে 1 টি উপাদান বেশি থাকবে, সর্বাধিক।
আপনি যখন সিকোয়েন্সে একটি নতুন উপাদান যুক্ত করবেন, যদি সংখ্যাটি বর্তমান মধ্যকের চেয়ে ছোট হয়, আপনি এটিকে মিনিটের গাদাতে যুক্ত করেন, অন্যথায়, আপনি এটিকে সর্বোচ্চ গাদাতে যুক্ত করেন। এখন, যদি গাদাটি ভারসাম্যহীন হয় (একটি স্তূপের মধ্যে অন্যটির তুলনায় 1 টিরও বেশি উপাদান থাকে), আপনি সবচেয়ে বড় গাদা থেকে একটি উপাদান টানুন এবং সবচেয়ে ছোটতে যুক্ত করুন । এখন তারা ভারসাম্যহীন।
একটি স্তূপের বৈশিষ্ট্যটি হ'ল এটি এমন একটি কাঠামো যা ডেটা অর্ধনির্মিত বজায় রাখে; সুতরাং, এটি একটি সম্পূর্ণ ক্রম বজায় রাখার ব্যয় এবং এলোমেলো বিশৃঙ্খলার মাধ্যমে অনুসন্ধানের ব্যয়ের মধ্যে একটি ভাল বাণিজ্য। সেই বৈশিষ্ট্যটি অনেকগুলি অ্যালগরিদমে যেমন নির্বাচন, ক্রম বা শ্রেণিবদ্ধকরণ হিসাবে ব্যবহৃত হয়।
স্তূপের আর একটি দরকারী বৈশিষ্ট্য হ'ল এটি অ্যারে থেকে স্থানে তৈরি করা যেতে পারে!
আপনি যথাক্রমে সবচেয়ে ছোট এবং বৃহত্তম উপাদানগুলিতে অ্যাক্সেস করতে চাইলে আপনি একটি মিনিহ্যাপ বা ম্যাক্সহ্যাপ ব্যবহার করতে পারেন।