তালিকার পরিবর্তে অনুসন্ধান গাছ ব্যবহার করে হ্যাশ করছে


11

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

  1. insert,
  2. find এবং
  3. delete

মূল্যবান হয়। গড় কেস তালিকার ক্ষেত্রে তারা কি উন্নতি করবে?


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

উত্তর:


4

তালিকার জন্য, সন্নিবেশ, অনুসন্ধান এবং মুছুন যথাক্রমে , ( এন ) , ( এন ) এ রয়েছে । বাছাই করা তালিকা আরও খারাপ। বাইনারি অনুসন্ধান নিজেই বাছাই করা অ্যারেগুলির জন্য, যাতে অপারেশনগুলি ( এন ) , ( লগ এন ) , ( এন ) এ রয়েছে । আপনি যদি "সন্নিবেশ" এবং "মুছুন" অপারেশনগুলি চান তবে আপনার কেবল বাইনারি অনুসন্ধানের চেয়ে আরও বেশি প্রয়োজন।O(1)O(n)O(n)O(n)O(logn)O(n)

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


1
এটি সবই সঠিক, তবে আমি উত্থাপিত প্রশ্নের উত্তর কীভাবে দেয় তা দেখছি না।
আরজিরিগ

এটা তোলে একই প্রশ্ন ছিল না এ সব সময়ে। (এমনকি সম্পাদনার ইতিহাসেও মূল প্রশ্নটি নেই We অদ্ভুত)) আমি আমার উত্তরটি আপডেট করতে পারতাম তবে এটি গিলসের সাথে অনর্থক হয়ে উঠবে।
jmad

4

সবচেয়ে খারাপ ক্ষেত্রে, যদি আপনি একই হ্যাশ মানগুলির সাথে কেবলমাত্র উপাদানগুলি সংরক্ষণ করে থাকেন তবে একটি হ্যাশ টেবিল প্রতিটি বালিকে একই বালতিতে সঞ্চয় করে। আপনি যদি বালতির উপাদানগুলি সংরক্ষণের জন্য তালিকাগুলি ব্যবহার করেন, তবে অনুসন্ধানটি সবচেয়ে খারাপ ক্ষেত্রে হয় (যেখানে n টেবিলের উপাদানগুলির সংখ্যা - আরও সাধারণভাবে, n বৃহত্তম বালতির উপাদানগুলির সংখ্যা হয়), কারণ আপনি যদি টেবিলে নেই এমন কোনও উপাদান সন্ধান করছেন তবে আপনাকে পুরো তালিকাটি অতিক্রম করতে হবে। ইতিবাচক লুকআপ (যেখানে আপনি কি জানেন উপাদান উপস্থিত) একই জটিলতা রয়েছে: আপনার যা দরকার এন - 1 = Θ ( এন )O(n)nnn1=Θ(n)আপনি যদি তালিকার শেষ উপাদানটি সন্ধান করছেন। মুছে ফেলার একই জটিলতা রয়েছে (আপনার যদি শেষ উপাদানটি মুছতে থাকে তবে আপনার লুকআপ দরকার )। সন্নিবেশটি হ'ল ( এন ) যদি আপনার কোনও বিদ্যমান উপাদানটি পরীক্ষা করতে হয় তবে ( 1 ) যদি আপনি অনুলিপিকে অনুমতি দেন (তবে আপনি তালিকার শুরুতে উপাদানটি সন্নিবেশ করতে পারেন)।n1O(n)O(1)

সঙ্গে সামঞ্জস্যপূর্ণ বাইনারি অনুসন্ধান গাছ, খারাপ-কেস জটিলতা কমিয়ে আনা , কারণ একটি সুষম অনুসন্ধান বৃক্ষ গভীরতা মিট সংজ্ঞা দ্বারা গাছের আকার logarithmically বৃদ্ধি।O(logn)

O(1)

nn/2Θ(n)Θ(logn)


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