একটি হ্যাশ এবং অভিধানের মধ্যে পার্থক্য কী?


46

মধ্যে পার্থক্য কি Hashএবং Dictionary?

স্ক্রিপ্টিং ব্যাকগ্রাউন্ড থেকে এসে আমি অনুভব করি যে এগুলি একই রকম তবে আমি সঠিক পার্থক্যগুলি সন্ধান করতে চাই। গুগলিং আমাকে খুব একটা সাহায্য করেনি।

উত্তর:


92

Hashপ্রোগ্রামটি হ'ল একটি অত্যন্ত দুর্বল নামযুক্ত ডেটা স্ট্রাকচার যেখানে প্রোগ্রামার প্রয়োগের সাথে ইন্টারফেসটিকে বিভ্রান্ত করেছে ( এবং পুরো নামটি লিখতে খুব অলস ছিল, অর্থাত্ HashTableসংক্ষিপ্তসারটি অবলম্বন করেছিল Hash))।

Dictionaryহয় "সঠিক" নাম ইন্টারফেস (= এর এডিটি ), অর্থাৎ একটি মিশুক ধারক যে মানচিত্র (সাধারণত অনন্য) (অগত্যা অনন্য নয়) মান কি।

একটি হ্যাশ টেবিল এক ধরনের একটি অভিধান বেশ ভাল এক্সেস বৈশিষ্ট্য প্রদান করে যে (রানটাইম পরিপ্রেক্ষিতে) এবং সেইজন্য প্রায়ই ডিফল্ট বাস্তবায়ন সম্ভাব্য বাস্তবায়ন।

এই ধরনের প্রয়োগের দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য রয়েছে:

  1. কীগুলি হ্যাশেবল এবং সমতা তুলনীয় হতে হবে ।
  2. এন্ট্রি অভিধানে কোনও নির্দিষ্ট ক্রমে উপস্থিত হয়।

(কোনও চাবি হ্যাশেবল হওয়ার অর্থ হ'ল আমরা একটি কী থেকে একটি সংখ্যাসূচক মান গণনা করতে পারি যা পরবর্তীতে অ্যারেতে সূচক হিসাবে ব্যবহৃত হয়))

অভিধানের কাঠামোর কাঠামোর বিকল্প বাস্তবায়ন রয়েছে যা কীগুলিতে অর্ডার আরোপ করে - এটিকে প্রায়শই একটি সাজানো অভিধান বলা হয় (এবং সাধারণত কোনও অনুসন্ধানের গাছের ক্ষেত্রে প্রয়োগ করা হয়, যদিও অন্যান্য কার্যকর বাস্তবায়ন বিদ্যমান)।


সংক্ষিপ্তসার হিসাবে: একটি অভিধান একটি ADT যা মানগুলির কীগুলি ম্যাপ করে। এই এডিটির বেশ কয়েকটি সম্ভাব্য বাস্তবায়ন রয়েছে, যার মধ্যে হ্যাশ টেবিলটি একটি। Hashএটি একটি ভুলনামিক তবে প্রসঙ্গে এটি একটি অভিধানের সমান যা হ্যাশ টেবিলের ক্ষেত্রে প্রয়োগ করা হয়।


4
সি ++ তে উদাহরণ দেওয়ার জন্য, স্ট্যান্ডার্ড এসোসিয়েটিভ কনটেইনার টেম্পলেটগুলি হ্যাশ হিসাবে প্রয়োগ করা যায়নি, যদিও পরবর্তী মানকটিতে হ্যাশ টেবিলগুলি কার্যকরভাবে থাকবে। তারা যা করা unordered_mapহয় তার চেয়ে তারা কী করে তা দেখানোর জন্য তাদের ডাকা হয়।
ডেভিড থর্নলি

6
"সঠিক" কোন কর্তৃত্ব অনুসারে? রুবি এবং পার্লের মতো কিছু ভাষায়, অফিসিয়াল - এই কাঠামোর জন্য "সঠিক" পড়ুন - নামটি হ্যাশ ”
নহাত

11
@ নোট: আমার উদ্ধৃতি ব্যবহারের দিকে খেয়াল করুন। উপরন্তু, আমি আছে কেন নাম খারাপভাবে নির্বাচিত ব্যাখ্যা, আমি না? সুতরাং আপনার যদি কোনও কর্তৃপক্ষের প্রয়োজন হয় তবে আমি বলব এটি তাত্ত্বিক কম্পিউটার বিজ্ঞান পুলিশের কর্তৃপক্ষের দ্বারা।
কনরাড রুডল্ফ

9
মজার বিষয় হল, রুবি ১.৯-তে, Hashএকটি হ্যাশ টেবিলের সাহায্যে শ্রেণিটি বাস্তবায়ন করা অসম্ভব , যেহেতু রুবি ১.৯ Hashএএসস সন্নিবেশ ক্রম সংরক্ষণ করে যখন একটি হ্যাশ টেবিলটি না করে। সুতরাং, রুবি ১.৯-এ, নামটি Hashপ্রয়োগের আর কোনও প্রতিফলিত করে না।
জার্গ ডব্লু মিটাগ

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

8

"অভিধান" ধারণার নাম। একটি হ্যাশটেবল একটি সম্ভাব্য বাস্তবায়ন।


1
হ্যাশও একটি এডিটি। হ্যাশ টেবিল একটি হ্যাশ এর একটি বাস্তবায়ন
সায়রাম

3
@ সাইরাম আমি মনে করি এটি হ্যাশ টেবিলের চেয়ে হ্যাশ ফাংশন বোঝাতে 'হ্যাশ' এর পক্ষে আরও বেশি সাধারণ।
জে কে।

@jk আসলে "হ্যাশ" কিছু ইনপুটটিতে "হ্যাশ ফাংশন / অ্যালগরিদম" প্রয়োগের ফলাফল। একটি "হ্যাশ টেবিল" বা "হ্যাশ ম্যাপ" ওমেহ কিছু বস্তুর সাথে সম্পর্কিত এবং হ্যাশযোগ্য অবজেক্ট (জেনেরিক আকারে অবজেক্ট, ওওপিতে সীমাবদ্ধ নয়)
জোহানেস

এমন ভাষা রয়েছে যা হ্যাশ ফাংশন অপারেশনের পরিবর্তে অভিধান-ধরণের কাঠামোকে বোঝাতে 'হ্যাশ' ব্যবহার করে। রুবি, উদাহরণস্বরূপ
শান বার্টন

7

একটি অভিধান হ'ল দ্রুত অনুসন্ধান বা সন্নিবেশকরণের জন্য ব্যবহৃত কোনও ডেটা স্ট্রাকচার প্রয়োগের জন্য প্রদত্ত সম্মিলিত শব্দ। এটি হ্যাশ টেবিল, স্কিপ তালিকাগুলি, আরবি ট্রি ইত্যাদির মতো বিভিন্ন ডেটা স্ট্রাকচার ব্যবহার করে অর্জন করা / প্রয়োগ করা যেতে পারে A হ্যাশ টেবিল একটি ডিকশনারি বাস্তবায়ন সহ অনেকগুলি উদ্দেশ্যে দরকারী একটি নির্দিষ্ট ডেটা কাঠামো।


হ্যাশও একটি এডিটি। হ্যাশ এবং অভিধান এডিটির মধ্যে কোনও নির্দিষ্ট পার্থক্য রয়েছে?
সায়রাম

2
@ সাইরাম: না, একটি হ্যাশ একটি নির্দিষ্ট ধরণের অ্যালগরিদম (হ্যাশ ফাংশন) এর আউটপুট।

5

একটি অভিধানে কোনও এসোসিয়েটিভ অ্যারের ভিতরে সরাসরি মান উল্লেখ করতে একটি কী ব্যবহার করে ।

অর্থাত (KEY => VALUE)

একটি হ্যাশকে প্রায়শই একটি হ্যাশ টেবিল হিসাবে বর্ণনা করা হয় যা মেমরির অবস্থান (বা আরও সহজেই একটি অ্যারে) যেখানে মান হবে সেখানে গণনা করতে একটি হ্যাশ ফাংশন ব্যবহার করে । হ্যাশ ইনপুট হিসাবে কেইওয়াকে গ্রহণ করবে এবং আউটপুট হিসাবে একটি মান দেবে। তারপরে সেই মানটিকে মেমরি বা অ্যারে সূচকগুলিতে প্লাগ করুন।

অর্থাত KEY => HASH FUNCTION => VALUE

আমি অনুমান করি একটি সরাসরি আছে অন্যটি নয়। হ্যাশ ফাংশনগুলিও নিখুঁত হতে পারে এবং কখনও কখনও ভুল মান উল্লেখ করে একটি সূচক সরবরাহ করতে পারে। তবে তা সংশোধন করা যায়।

দেখার জন্য সেরা স্থান: উইকিপিডিয়া ( সহযোগী অ্যারে এবং হ্যাশ টেবিল )

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