সাধারণ ব্যক্তির শর্তাবলী এখানে একটি ব্যাখ্যা।
ধরে নেওয়া যাক আপনি বইয়ের সাথে একটি লাইব্রেরি পূরণ করতে চান এবং কেবল সেখানে স্টাফই করেন না, তবে আপনার যখন প্রয়োজন হবে তখন সহজেই এগুলি আবার সন্ধান করতে সক্ষম হতে চান।
সুতরাং, আপনি সিদ্ধান্ত নিয়েছেন যে যে কোনও ব্যক্তি বইটি পড়তে চায় সে যদি বইটির শিরোনাম এবং বুট করার সঠিক শিরোনামটি জানে, তবে এটিই নেওয়া উচিত। শিরোনামের সাথে, ব্যক্তি, গ্রন্থাগারিকের সহায়তায়, বইটি সহজে এবং দ্রুত খুঁজে পাওয়া উচিত।
সুতরাং, আপনি কিভাবে এটি করতে পারেন? ঠিক আছে, স্পষ্টতই আপনি প্রতিটি বই যেখানে রেখেছিলেন সেখানে কোনও ধরণের তালিকা রাখতে পারেন তবে লাইব্রেরিটি অনুসন্ধান করার মতো আপনারও একই সমস্যা রয়েছে, আপনাকে তালিকাটি সন্ধান করতে হবে। মঞ্জুর, তালিকাটি অনুসন্ধানে আরও ছোট এবং সহজ হবে তবে আপনি গ্রন্থাগারের এক প্রান্ত থেকে (বা তালিকা) অপর প্রান্তে ক্রমানুসারে অনুসন্ধান করতে চান না।
আপনি এমন কিছু চান যা বইয়ের শিরোনাম সহ, আপনাকে একবারে সঠিক স্থান দিতে পারে, তাই আপনাকে যা করতে হবে তা হ'ল ডান শেল্ফটিতে সরে যাওয়া এবং বইটি তুলে নেওয়া।
তবে কীভাবে তা করা যায়? ঠিক আছে, আপনি যখন গ্রন্থাগারটি পূরণ করেন তখন অনেকটা পূর্বানুমতি দিয়ে এবং যখন আপনি লাইব্রেরিটি পূরণ করেন তখন প্রচুর কাজ।
কেবল এক প্রান্ত থেকে অন্য প্রান্তে লাইব্রেরিটি পূরণ করা শুরু করার পরিবর্তে, আপনি একটি চতুর সামান্য পদ্ধতি অবলম্বন করুন। আপনি বইটির শিরোনাম নিন, একটি ছোট কম্পিউটার প্রোগ্রামের মাধ্যমে এটি চালান, যা সেই তাকের একটি শেল্ফ নম্বর এবং একটি স্লট নম্বর আউট দেয়। আপনি এখানে বইটি রাখেন।
এই প্রোগ্রামটির সৌন্দর্য হ'ল পরবর্তীতে, কোনও ব্যক্তি যখন বইটি পড়তে ফিরে আসে, আপনি প্রোগ্রামের মাধ্যমে আবার শিরোনামটি খাওয়ান, এবং আপনাকে একইভাবে দেওয়া শেল্ফ নম্বর এবং স্লট নম্বরটি ফিরে পেয়েছিলেন, এবং এটি হ'ল বই যেখানে অবস্থিত।
প্রোগ্রাম, যেমন অন্যরা ইতিমধ্যে উল্লেখ করেছে, হ্যাশ অ্যালগরিদম বা হ্যাশ গণনা বলা হয় এবং সাধারণত এটিতে খাওয়ানো ডেটা (এই ক্ষেত্রে বইয়ের শিরোনাম) নিয়ে কাজ করে এবং এ থেকে একটি সংখ্যা গণনা করে।
সরলতার জন্য, আসুন আমরা বলি যে এটি প্রতিটি অক্ষর এবং চিহ্নকে কেবল একটি সংখ্যায় রূপান্তর করে এবং সেগুলি সবগুলি যোগ করে। বাস্তবে, এটি এর চেয়ে অনেক জটিল, তবে আসুন আপাতত এটিকে ছেড়ে দিন।
এই জাতীয় অ্যালগরিদমের সৌন্দর্য হ'ল আপনি যদি বার বার একই ইনপুটটি খাওয়াতে থাকেন তবে এটি প্রতিবার একই সংখ্যায় থুতু ফেলে রাখবে।
ঠিক আছে, সুতরাং এটি মূলত হ্যাশ টেবিলটি কীভাবে কাজ করে।
প্রযুক্তিগত জিনিস অনুসরণ করা হয়।
প্রথমত, সংখ্যার আকার রয়েছে। সাধারণত, এই জাতীয় হ্যাশ অ্যালগরিদমের আউটপুট কিছু বড় সংখ্যার পরিসরের অভ্যন্তরে থাকে যা সাধারণত আপনার টেবিলে থাকা স্থানের চেয়ে অনেক বড়। উদাহরণস্বরূপ, ধরা যাক যে আমাদের লাইব্রেরিতে ঠিক দশ মিলিয়ন বইয়ের জন্য জায়গা রয়েছে। হ্যাশ গণনার আউটপুট 0 থেকে এক বিলিয়ন হতে পারে যা অনেক বেশি।
তাই আমরা কি কাজ করতে পারি? আমরা মডুলাস ক্যালকুলেশন নামে কিছু ব্যবহার করি, যা মূলত বলা হয় যে আপনি যদি নিজের সংখ্যাটি (যেমন এক বিলিয়ন সংখ্যা) গণনা করেছিলেন তবে আপনি যদি আরও ছোট পরিসরের ভিতরে থাকতে চান, প্রতিবার যখন আপনি সেই ছোট পরিসরের সীমাটি আঘাত করেন তখন আপনি শুরু করেছিলেন 0, তবে আপনি যে বড় ক্রমটি এসেছেন সে সম্পর্কে আপনাকে কতদূর ট্র্যাক করতে হবে।
বলুন যে হ্যাশ অ্যালগরিদমের আউটপুট 0 থেকে 20 এর মধ্যে রয়েছে এবং আপনি একটি নির্দিষ্ট শিরোনাম থেকে 17 মান পাবেন। লাইব্রেরির আকার যদি মাত্র 7 টি বই হয় তবে আপনি 1, 2, 3, 4, 5, 6 গণনা করুন এবং আপনি 7 এ পৌঁছে গেলে আপনি 0 এ ফিরে যান start যেহেতু আমাদের 17 বার গণনা করা দরকার, আমাদের কাছে 1 টি রয়েছে, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, এবং চূড়ান্ত সংখ্যা 3।
অবশ্যই মডুলাস গণনা সেভাবে করা হয় না, এটি বিভাগ এবং একটি বাকী অংশ দিয়ে সম্পন্ন হয়। 17 কে 7 দ্বারা ভাগ করার বাকি অংশটি 3 (7 টি 14 বার 14 এ 2 বার হয় এবং 17 এবং 14 এর মধ্যে পার্থক্য 3)।
এইভাবে, আপনি বইটি স্লট 3 নম্বরে রেখেছেন।
এটি পরবর্তী সমস্যা বাড়ে। দুর্ঘটনায়। যেহেতু অ্যালগরিদমের বইগুলি ফাঁকা রাখার কোনও উপায় নেই যাতে তারা গ্রন্থাগারটি হুবহু পূরণ করে (বা হ্যাশ টেবিলটি আপনি যদি করেন) তবে এটি পূর্বে ব্যবহৃত একটি সংখ্যা গণনা করে শেষ হবে। লাইব্রেরি অর্থে, আপনি যখন কোনও বই রাখার ইচ্ছা শেল্ফ এবং স্লট নম্বরে পৌঁছেছেন, সেখানে ইতিমধ্যে একটি বই রয়েছে।
বিভিন্ন সংঘর্ষের হ্যান্ডলিংয়ের পদ্ধতি বিদ্যমান রয়েছে, টেবিলে অন্য একটি দাগ ( ডাবল হ্যাশিং ) পাওয়ার জন্য বা অন্য কোনও গণনায় ডেটা চালানো সহ , বা কেবল আপনাকে দেওয়া হয়েছিল এমন একটি জায়গার সন্ধানের জন্য (যেমন পূর্ববর্তী বইয়ের ঠিক স্লট ধরে ধরে লিনিয়ার প্রোবিং নামেও পরিচিত ছিল )। এর অর্থ হ'ল আপনি যখন বইটি পরে অনুসন্ধান করার চেষ্টা করবেন তখন আপনাকে কিছু খনন করতে হবে, তবে এটি কেবল গ্রন্থাগারের এক প্রান্তে শুরু করার চেয়ে ভাল।
অবশেষে, এক পর্যায়ে, আপনি লাইব্রেরিটির চেয়ে আরও বেশি বই লাইব্রেরিতে রাখতে চান। অন্য কথায়, আপনার একটি বড় লাইব্রেরি তৈরি করা দরকার। যেহেতু গ্রন্থাগারের সঠিক স্পটটি গ্রন্থাগারের সঠিক এবং বর্তমান আকার ব্যবহার করে গণনা করা হয়েছিল, এটি অনুসরণ করে চলেছে যে আপনি যদি লাইব্রেরির আকার পরিবর্তন করেন তবে আপনি সমস্ত বইয়ের জন্য নতুন দাগগুলি খুঁজে পেতে পারেন যেহেতু গণনাটি তাদের দাগগুলি সন্ধান করার জন্য করেছিল পরিবর্তিত হয়েছে.
আমি আশা করি বালতি এবং ফাংশনগুলির তুলনায় এই ব্যাখ্যাটি পৃথিবীতে কিছুটা নিচে ছিল :)