হ্যাশটেবল ভিত্তিক সমাধান
হ্যাশটেবল জটিলতা তৈরি করে কেন তা নিশ্চিত নয় Ω(n2) যদি nহয় অক্ষরের সংখ্যা (না শব্দ)।
আপনি যদি নথির প্রতিটি চরিত্রের মাধ্যমে পুনরাবৃত্তি করেন এবং যেমন আপনি পুনরাবৃত্তি করছেন তবে শব্দের হ্যাশকোড গণনা করুন, আপনি পেরিয়ে যাবেন nচরিত্র. এটি হ'ল, কোনও চিঠির মুখোমুখি হওয়ার সাথে সাথেই শব্দটি শুরু হয়, সুতরাং শব্দটি শেষ না হওয়া পর্যন্ত হ্যাশ গণনা শুরু করুন (বিরামচিহ্নের জন্য কিছু বিশেষ ক্ষেত্রে রয়েছে তবে সেগুলি জটিলতায় প্রভাব ফেলবে না)। প্রতিটি শব্দের জন্য, একবার হ্যাশ গণনা করা হয়, এটি একটি হ্যাশটেবল যোগ করুন। এটি প্রতিটি শব্দের দু'বার অতিক্রম করা এড়ানো, অর্থাত্ শব্দটি সন্ধান করার জন্য ডকুমেন্টের মাধ্যমে প্রথমে পুনরাবৃত্তি করা এবং তারপরে হ্যাশটেবলে সন্নিবেশ করা, যদিও এই ক্ষেত্রে জটিলতাও হতে পারেΩ(n)।
হ্যাশটেবলে সংঘর্ষগুলি অবশ্যই একটি সমস্যা এবং মূল হ্যাশট্যাবালটি কত বড় ছিল এবং হ্যাশিং অ্যালগরিদমটি কতটা ভাল তার উপর নির্ভর করে যে কেউ তার কাছাকাছি যেতে পারে O(1) সন্নিবেশ এবং গণনা রাখার জন্য এবং এইভাবে O(n)অ্যালগরিদমের জন্য, যদিও মেমরির ব্যয়ে। যাইহোক, আমি এখনও খারাপ পরিস্থিতি হিসাবে দৃ as় করা যেতে পারে যে প্রশংসা করতে পারেনO(n2) যদি n অক্ষরের সংখ্যা।
অনুমানটি হ'ল হ্যাশিং অ্যালগরিদম অক্ষরের সংখ্যার সাথে সম্পর্কিত সময়ে লিনিয়ার।
রেডিক্সের বাছাই ভিত্তিক সমাধান
বিকল্পভাবে, ইংরেজী ধরে নিয়ে, যেহেতু শব্দের দৈর্ঘ্য সুপরিচিত, আমি পরিবর্তে একটি গ্রিড তৈরি করব এবং মূলটি সাজানোর প্রয়োগ করব যা O(kN) কোথায় k ইংরেজি ভাষার কোনও শব্দের সর্বাধিক দৈর্ঘ্য হবে এবং Nশব্দগুলির মোট সংখ্যা। প্রদত্তn নথিতে অক্ষরের সংখ্যা এবং k এটি একটি ধ্রুবক, অসম্পূর্ণভাবে এই পরিমাণ O(n)।
এখন প্রতিটি শব্দের ফ্রিকোয়েন্সি গণনা করুন। যেহেতু শব্দগুলি বাছাই করা হয়েছে, আমরা প্রতিটি শব্দটিকে তার আগের শব্দটির সাথে তুলনা করে দেখব যে এটি একই বা ভিন্ন কিনা। যদি এটি একই হয়, আমরা শব্দটি সরিয়ে ফেলি এবং পূর্বের সাথে একটি গণনা যুক্ত করি। যদি আলাদা হয় তবে কেবল 1 টি গণনা করুন এবং এগিয়ে যান। এটি প্রয়োজন2n তুলনা যেখানে n অক্ষর সংখ্যা, এবং এইভাবে O(n) সামগ্রিকভাবে জটিলতায়।
ইংরাজির শীর্ষ কয়েকটি দীর্ঘতম শব্দ হাস্যকরভাবে দীর্ঘ , তবে তারপরে কেউ যুক্তিসঙ্গত সংখ্যায় (যেমন 30 বা তার চেয়ে কম) শব্দের দৈর্ঘ্যটি ক্যাপ করতে পারে এবং এর সাথে আসা ত্রুটির মার্জিন গ্রহণ করে শব্দগুলি ছাঁটাই করতে পারে।