দক্ষ পুনরাবৃত্তি সন্নিবেশ জন্য ডেটা কাঠামো সেট করুন


11

আমি একটি স্পেস-দক্ষ ডেটা কাঠামো খুঁজছি যা শব্দযুক্ত উপাদানগুলির সেটগুলি (কোনও পুনরাবৃত্তি নয়) ধারণ করে এবং দ্রুত সন্নিবেশকে সমর্থন করে (মোড়কৃত ও (1))। "স্পেস-দক্ষ" দ্বারা আমি অর্থ, আদর্শভাবে, শব্দগুলি সঞ্চয় করতে পারিn+o(n) উপাদান।n

একটি সেট হওয়া এই প্রশ্নের একটি গুরুত্বপূর্ণ অংশ: প্রতিটি উপাদান যদি বার যোগ করা হয় তবে ব্যবহৃত স্থানটি এন লগ হতে পারে নাlognnlogn

কাঠামোর এছাড়াও তার উপাদান তালিকা (সমর্থনযোগ্য যুক্তিসঙ্গত) সমর্থন করা উচিত; যে কোনও বুদ্ধিমান কাঠামোর এখানে কোনও সমস্যা না হওয়া উচিত। (দ্রুত সদস্যপদ অনুসন্ধানগুলি একটি প্লাস))


2
এমন কোনও কারণ আছে যে কোনও হ্যাশ টেবিলটি কৌশলটি না করে?
ডেভ

@ ডেভ: স্থানের প্রয়োজনীয়তা পূরণ হিসাবে আমি এটাকে ভাবি না, তবে আমি মনে করি পর্যাপ্ত কঠোর গতিশীল পুনরায় আকার দেওয়ার সময়সূচী এটি কার্যকর করতে পারে। তবে সাধারণত আমি আসলে কোড লেখার আগে সেখানে কী আছে তা দেখতে চাই।
চার্লস

1
গতিশীল রাইজিংয়ের সাথে এমোরিটাইজড পেতে আপনাকে একটি ধ্রুবক ভগ্নাংশের দ্বারা আকার বাড়াতে হবে, যা আমি মনে করি না যদি আপনি কঠোরভাবে এন + ( এন ) পূরণ করতে চান তবে স্থানের প্রয়োজনীয়তা পূরণ করে । O(1)n+o(n)
ডেভ

ঠিক আছে, এটি কিছুটা মূর্খ — তবে আপনার মহাবিশ্বটি ধ্রুব আকারের (শব্দযুক্ত উপাদান) আকারে দেওয়া হলেও, পুরো বিট ভেক্টরেরও আকার থাকবে ...O(1)
ম্যাগনাস লাই হেটল্যান্ড

@ ম্যাগনাস: আমি অনুমান করি যে এটির অর্থ হ'ল প্রশ্নের ও-ও-নোটেশনের পিছনের আসল কার্যগুলি শব্দের আকারের উপর নির্ভর করে না।
Tsuyoshi Ito

উত্তর:


10

আমি মনে করি রমন এবং রাওয়ের "সুসিনেক্ট ডাইনামিক ডকোচারি এবং গাছ" আপনার নির্দিষ্ট পূরণ করেছে। বিমূর্ত থেকে:

আমরা প্রথমে একটি সেট উপস্থাপনা দেব এস | = যে সমর্থন সদস্যপদ প্রশ্নের হে ( 1 ) সবচেয়ে খারাপ ক্ষেত্রে সময় এবং থেকে / মুছে দেওয়া মধ্যে সন্নিবেশ এসহে ( 1 ) amortized সময় প্রত্যাশিত। উপস্থাপনায় বি + ( বি ) বিট ব্যবহার করা হয়, যেখানে বি = এল জি ( এম)SU={0,,m1},|S|=nO(1)SO(1)B+o(B)হ'ল তথ্য-তাত্ত্বিক নূন্যতম স্থানএসকেউপস্থাপন করার জন্য।B=lg(mn)S


এটি দুর্দান্ত দেখায়। (গ্রহণ করার আগে আমি যদি কাগজটি পড়ি তবে আপনি বুঝতে পারবেন, ঠিক?)
চার্লস

1

যদি আপনার অ্যাপ্লিকেশনটি কিছু মিথ্যা ইতিবাচকতা সহ্য করতে পারে, তবে আপনার একটি ব্লুম ফিল্টার ব্যবহার করা উচিত ।

উইকিপিডিয়াটির প্যারাফ্রেজ: একটি ব্লুম ফিল্টার একটি স্থান-দক্ষ সম্ভাব্য ডেটা স্ট্রাকচার যা কোনও উপাদান কোনও সেটের সদস্য কিনা তা পরীক্ষা করতে ব্যবহৃত হয়। মিথ্যা ইতিবাচক সম্ভাবনা রয়েছে, তবে মিথ্যা নেতিবাচক তা সম্ভব নয়। উপাদানগুলিকে সেটে যুক্ত করা যেতে পারে, তবে সরানো হয়নি। সেটে যত বেশি উপাদান যুক্ত হবে, মিথ্যা ধনাত্মক হওয়ার সম্ভাবনা তত বেশি।


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