হ্যাশ ফাংশন শ্রেণিবিন্যাস


9

ইন্টারনেটে, আমি এই প্রশ্নটি এসেছি:

মূল মানটি পাওয়া যায় এমন বিভিন্ন পদ্ধতির উপর ভিত্তি করে হ্যাশিং ফাংশনগুলিকে শ্রেণিবদ্ধ করুন।

মত উত্তর সহ

  • সরাসরি পদ্ধতি
  • বিয়োগ পদ্ধতি
  • মডুলো-বিভাগ পদ্ধতি
  • ডিজিট-এক্সট্রাকশন পদ্ধতি
  • মিড-স্কোয়ার পদ্ধতি
  • ভাঁজ পদ্ধতি
  • সিউডো-এলোমেলো পদ্ধতি

যা আমি অদ্ভুত বলে মনে করি। আমি মনে করি আমি হ্যাশিং সম্পর্কে অনেক কিছু জানি, তবে এটি আমার কাছে সরল গীবত, কেউ কি ব্যাখ্যা করতে পারেন?

উত্তর:


4

এগুলি হ'ল হ্যাশকোডকে অ্যারের সূচকগুলিতে পরিণত করার পদ্ধতি যা মানগুলি অন্তর্ভুক্ত করে। ধরা যাক আপনার কাছে 0x12345678 এর একটি হ্যাশকোড রয়েছে। একটি খুব বড় সংখ্যা এবং আপনার এই আকারের অ্যারে থাকার সম্ভাবনা নেই। আপনি যদি করেন তবে আপনি করতে পারেন

Value = array[0x12345678];

এবং করা (সরাসরি পদ্ধতি)।

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

Value = array[hashcode & 0xffff];

অথবা অ্যারের আকারের বিপরীতে হ্যাশকোডটি মোড করুন

Value = array[hashcode % array.size()]; // modulo division

ইত্যাদি ইত্যাদি

সম্পাদনা করুন: এই লিঙ্কটি সাহায্য করতে পারে


ধন্যবাদ, এটি - লিঙ্কটি এই *** এর উত্স বলে মনে হচ্ছে। তারা এখনও অনেক কিছু একসাথে মিশ্রিত করায় এটি এখনও বোধগম্য নয়: 1. একটি কী (যেমন, ভাঁজ এবং যোগ করুন) থেকে হ্যাশকোডের গণনা করা, 2. হ্যাশ (উদাহরণস্বরূপ, মধ্য-বর্গক্ষেত্র) উন্নত করা (,. ম্যাপিং) সূচকগুলিতে হ্যাশ (যেমন, মডুলাস, "&")।
মার্টিনাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.