একটি স্ট্রিংয়ের মধ্যে দীর্ঘতম পুনরাবৃত্তি প্যাটার্নটি সন্ধান করুন


9

আমি একটি স্ট্রিংয়ের দীর্ঘতম পুনরাবৃত্তি প্যাটার্নটি খুঁজতে একটি দক্ষ অ্যালগরিদম সন্ধান করছি।

উদাহরণস্বরূপ, নিম্নলিখিত সংখ্যার স্ট্রিং বিবেচনা করুন:

5431428571428571428571428571427623874534

আপনি দেখতে পাচ্ছেন, 142857142857দীর্ঘতম প্যাটার্নটি যা এই স্ট্রিংয়ে কয়েকবার (কমপক্ষে দুবার) পুনরাবৃত্তি হয়।

বারবার স্ট্রিংতে ব্রুট-ফোর্সের পরিবর্তে কোনও ধারণা থাকা উচিত না?


3
আপনি "দু'বার" এর অর্থ কী তা ব্যাখ্যা করেননি, তবে যদি "দু'বার" "দু'বার" হিসাবে গণনা করেন তবে 142857এটি সবচেয়ে দীর্ঘ নয় কারণ 142857142857দীর্ঘ হয়। আমি মনে করি আপনি "পুনরাবৃত্ত প্যাটার্ন" দ্বারা কী বোঝাতে চাইছেন তা পরিষ্কার করতে আপনার প্রশ্নটি সম্পাদনা করা উচিত।
Tsuyoshi Ito

খুব ভাল পয়েন্ট। আমি প্রশ্ন আপডেট করব।

8
আপনি কি একে অপরের থেকে বিচ্ছিন্ন হওয়ার জন্য প্যাটার্নটির সংঘটনগুলি প্রয়োজনীয় করছেন? কারণ যদি তা না হয় তবে 142857142857 এখনও দীর্ঘতম পুনরাবৃত্তি নয়; 142857142857142857142 দুইবার ঘটে। যাই হোক না কেন, এই জাতীয় প্রশ্নের উত্তর সাধারণত "প্রত্যয় গাছ"।

উত্তর:


15

সমস্যাটি আশ্চর্যের সাথে অ-তুচ্ছ। প্রথমে দুটি ব্রুট ফোর্স অ্যালগোরিদম। একটি বর্গক্ষেত্র ("পুনরাবৃত্ত প্যাটার্ন") এর দৈর্ঘ্য এবং অবস্থান দ্বারা দেওয়া হয় , এবং যাচাই করতে সময় লাগে takes আমরা যেতে পারেন সব এবং , আমরা একটি প্রাপ্ত অ্যালগরিদম। আমরা প্রথম ওভার লুপিং দ্বারা যে উন্নত করতে পারেন , এবং তারপর একটি দূরত্ব দুটি চলমান পয়েন্টার সাথে স্ট্রিং স্ক্যান । এই ভাবে, এক কিনা দৈর্ঘ্যের একটি বর্গক্ষেত্র যাচাই করতে পারেন রৈখিক সময় বিদ্যমান, একটি মোট সময় চলমান দান ।pO()pO(n3)2O(n2)

কোলপাকভ এবং কুচেরভ [1] সময়ে একটি শব্দে সমস্ত সর্বাধিক পুনরাবৃত্তিগুলি সন্ধানের জন্য একটি অ্যালগরিদম তৈরি করেছিলেন এবং তাদের অ্যালগোরিদমটি সময়ে সমস্ত সর্বাধিক বর্গগুলি সন্ধান করতে ব্যবহার করা যেতে পারে । একটি পুনরাবৃত্ত ফর্ম একটি subword হয় , যেখানে এবং একটি সঠিক প্রিফিক্স । এই পুনরাবৃত্তির মধ্যে থাকা বৃহত্তম স্কোয়ারটি হ'ল । এই সূত্রটি ব্যবহার করে, কোনও শব্দে সমস্ত সর্বাধিক পুনরাবৃত্তি দেওয়া (যার মধ্যে কেবল অনেক রয়েছে), কেউ সবচেয়ে বড় বর্গটি খুঁজে পেতে পারে।O(n)O(n)wkxk2xw(wk/2)2O(n)


[1] কোলপাকভ, আর।, এবং কুচেরভ, জি। (1999)। রৈখিক সময়ে একটি শব্দে সর্বাধিক পুনরাবৃত্তি সন্ধান করা । ইন কম্পিউটার সায়েন্স, 1999 40 তম বার্ষিক সিম্পোজিয়াম ফাউন্ডেশন (পৃ। 596-604)। আইইইই।

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