ওপেন হ্যাশিং এবং ক্লোজড হ্যাশিং এর অর্থ


97

ওপেন হ্যাশিং (পৃথক চেইনিং):

ওপেন হ্যাশিংয়ে, কীগুলি হ্যাশ টেবিলের কোষগুলির সাথে সংযুক্ত লিঙ্কযুক্ত তালিকায় সংরক্ষণ করা হয়।

বন্ধ হ্যাশিং (উন্মুক্ত ঠিকানা):

বদ্ধ হ্যাশিংয়ে, সমস্ত কীগুলি সংযুক্ত তালিকার ব্যবহার ছাড়াই হ্যাশ টেবিলের মধ্যেই সংরক্ষণ করা হয়।

তাদের কেন খোলা, বন্ধ এবং পৃথক বলা হয় তা বুঝতে আমি অক্ষম। কেউ কি এটি ব্যাখ্যা করতে পারেন?


আসলে আমরা কখনই হ্যাশ টেবিলগুলিতে কীগুলি সঞ্চয় করি না, আমরা একটি টিপল (কী, মান) নিই এবং মানটি কোথায় সংরক্ষণ করা উচিত তা গণনা করতে কীটি ব্যবহার করি। সুতরাং প্রকৃতপক্ষে আমরা হ্যাশ সারণিতে মানগুলি সঞ্চয় করি
মিঃ সূর্য ঝা

উত্তর:


118

"বদ্ধ" বনাম "উন্মুক্ত" এর ব্যবহার প্রতিফলিত করে যে আমরা একটি নির্দিষ্ট অবস্থান বা ডেটা কাঠামো ব্যবহার করে লক হয়েছি কিনা (এটি অত্যন্ত অস্পষ্ট বিবরণ, তবে আশা করি বাকীগুলি সাহায্য করবে)।

উদাহরণস্বরূপ, "ওপেন অ্যাড্রেসিং" এর "ওপেন" আমাদের সূচকটি (ওরফে ঠিকানা) বলছে যেখানে হ্যাশ টেবিলের মধ্যে কোনও বস্তু সংরক্ষণ করা হবে তার হ্যাশ কোড দ্বারা সম্পূর্ণ নির্ধারণ করা হয়নি। পরিবর্তে, হ্যাশ টেবিলের মধ্যে ইতিমধ্যে কিসের উপর নির্ভর করে সূচকটি পৃথক হতে পারে।

"বদ্ধ হ্যাশিং" এর "ক্লোজড" বলতে বোঝায় যে আমরা কখনই হ্যাশ টেবিলটি ছাড়ি না; প্রতিটি বস্তু হ্যাশ টেবিলের অভ্যন্তরীণ অ্যারেতে সরাসরি একটি সূচীতে সংরক্ষণ করা হয়। মনে রাখবেন যে এটি কেবলমাত্র কোনও ধরণের উন্মুক্ত ঠিকানা কৌশল ব্যবহার করেই সম্ভব is এটি ব্যাখ্যা করে যে "বদ্ধ হ্যাশিং" এবং "উন্মুক্ত ঠিকানা" প্রতিশব্দ।

এটি ওপেন হ্যাশিংয়ের সাথে বৈপরীত্য করুন - এই কৌশলটিতে আসলে কোনও বস্তু হ্যাশ টেবিলের অ্যারেতে সংরক্ষণ করা হয় না; পরিবর্তে একবার কোনও জিনিস হ্যাশ হয়ে গেলে, এটি একটি তালিকায় সংরক্ষণ করা হয় যা হ্যাশ টেবিলের অভ্যন্তরীণ অ্যারে থেকে পৃথক। "উন্মুক্ত" বলতে হ্যাশ টেবিলটি রেখে এবং একটি পৃথক তালিকা ব্যবহার করে আমরা যে স্বাধীনতা পাই তা বোঝায়। যাইহোক, "পৃথক তালিকা" কেন ইশারা দেয় যে ওপেন হ্যাশিংটি "পৃথক চেইনিং" নামেও পরিচিত।

সংক্ষেপে, "বদ্ধ" সর্বদা এক ধরণের কঠোর গ্যারান্টি বোঝায়, যেমন আমরা যখন গ্যারান্টি দিই যে অবজেক্টগুলি সর্বদা হ্যাশ টেবিলের মধ্যে সরাসরি সংরক্ষণ করা হয় (বন্ধ হ্যাশিং)। তারপরে, "বন্ধ" এর বিপরীতটি "উন্মুক্ত", সুতরাং আপনার যদি এই ধরনের গ্যারান্টি না থাকে তবে কৌশলটিকে "ওপেন" হিসাবে বিবেচনা করা হবে।


17
আমাদের যুক্ত করা উচিত যে ওপেন হ্যাশিং (পৃথক চেইনিং) লিঙ্কযুক্ত তালিকাগুলিতে সীমাবদ্ধ নয়, যা ক্যাশেবান্ধব নয় এবং ও (এন / 2) আচরণের সাথে সংঘর্ষের আক্রমণে হ্রাস পেয়েছে। সংঘর্ষ বালতিগুলির জন্য আপনি গাছ বা সাজানো অ্যারে ব্যবহার করতে পারেন।
রুববান

দ্বন্দ্বমূলক তথ্যের কারণে নিম্নরূপ দিন: আপনি বলেছিলেন "উন্মুক্ত" এবং "বন্ধ সমার্থক প্রতিশব্দ, তারপরে শেষে:" "বন্ধ" এর বিপরীত "খোলা"
মারওয়েন ট্রাবেলসি

4
@ মারভিন ট্রাবেলসি আমি কখনই বলিনি যে "বন্ধ" এবং "উন্মুক্ত" প্রতিশব্দ।
কেন ওয়েইন ভিন্ডারলিন্ডে

'এটি ব্যাখ্যা করে যে "বদ্ধ হ্যাশিং" এবং "উন্মুক্ত ঠিকানা" প্রতিশব্দ।
মারওয়েন ট্রাবেলসি

4
কেউ কি এমন উত্স প্রমাণ করতে পারে যে এটি সঠিক ?তিহাসিক ব্যুৎপত্তি?
সান্ট্রোপড্রো

3

আপনার কাছে একটি অ্যারে রয়েছে যা "হ্যাশ টেবিল"।

ওপেন হ্যাশিং এ অ্যারের প্রতিটি কক্ষ সংঘর্ষের বিপরীতে থাকা একটি তালিকার দিকে নির্দেশ করে। লিঙ্কযুক্ত তালিকার সমস্ত আইটেমের জন্য হ্যাশিং একই সূচক তৈরি করেছে।

ক্লোজড হ্যাশিংয়ে আপনি প্রতিটি কিছুর জন্য একটি মাত্র অ্যারে ব্যবহার করেন। আপনি একই অ্যারে সংঘর্ষগুলি সঞ্চয় করেন। কৌতুকটি হ'ল সংঘর্ষ থেকে সংঘর্ষের ইউনিট থেকে ঝাঁপ দেওয়ার জন্য কিছু স্মার্ট উপায় ব্যবহার করা আপনি যা চান তা খুঁজে পান। এবং এটি পুনরুত্পাদনযোগ্য / নির্মাতামূলক পদ্ধতিতে করুন।


2

খোলা ঠিকানা নামটি সত্যটিকে বোঝায় যে উপাদানটির অবস্থান ("ঠিকানা") এর হ্যাশ মান দ্বারা নির্ধারিত হয় না। (এই পদ্ধতিটিকে ক্লোজড হ্যাশিংও বলা হয়)।

ইন পৃথক chaining , প্রতিটি বালতি স্বাধীন, এবং এডিটি একই সূচক সঙ্গে এন্ট্রির (তালিকা, বাইনারি অনুসন্ধান গাছ, ইত্যাদি) কিছু বাছাই হয়েছে। একটি ভাল হ্যাশ টেবিলে, প্রতিটি বালতিতে শূন্য বা একটি প্রবেশিকা থাকে, কারণ সন্নিবেশ, অনুসন্ধান ইত্যাদির জন্য আমাদের অর্ডার ও (1) এর ক্রিয়াকলাপ প্রয়োজন because

এই হল উদাহরণস্বরূপ এর পৃথক chaining mod অপারেটর ব্যবহার করে একটি সহজ হ্যাশ ফাংশন সঙ্গে সি ++ ব্যবহার (স্পষ্ট, একটি খারাপ হ্যাশ ফাংশন)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.