প্রত্যয় অ্যারে ব্যবহার করে দুটি স্ট্রিংয়ের সর্বাধিক দীর্ঘতম স্ট্রাস্টিং গণনা করা হচ্ছে


15

জটিলতায় কীভাবে প্রত্যয় অ্যারে তৈরি করা যায় তা শিখার পরে আমি প্রত্যয় অ্যারের প্রয়োগগুলি আবিষ্কার করতে আগ্রহী। এর মধ্যে একটি সময়ে দুটি স্ট্রিংয়ের মধ্যে সর্বাধিক দীর্ঘতম স্ট্রাস্টিং সন্ধান করছে । আমি নিম্নলিখিত অ্যালগরিদম ইন্টারনেটে পেয়েছি:হে(এন)হে(এন)

  1. এবং দুটি স্ট্রিংকে স্ট্রিং মার্জবি বিএকজনবিএকজনবি
  2. প্রত্যয় অ্যারে গণনাএকজনবি
  3. (দীর্ঘতম সাধারণ উপসর্গ) অ্যারে গণনা করুনএলসিপি
  4. উত্তরটি হ'ল বৃহত্তম মানএলসিপি[আমি]

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

আগাম ধন্যবাদ.

দ্রষ্টব্য: আমি এই অ্যালগরিদমের সঠিকতার গ্যারান্টি দিচ্ছি না; আমি এটি একটি ব্লগে পেয়েছি এবং আমি নিশ্চিত যে এটি কাজ করছে। আপনি যদি এটি ভুল বলে মনে করেন তবে দয়া করে অন্য একটি অ্যালগরিদম প্রস্তাব করুন।


3
অ্যালগরিদম বাস্তবায়নের আগে এটি কেন কাজ করে তা বোঝার চেষ্টা করুন। এটি কীভাবে দুটি স্ট্রিং সংমিশ্রিত করতে পারে এমন প্রশ্নের উত্তর দিতে সহায়তা করতে পারে।
যুবাল ফিল্মাস

3
আমি এই অ্যালগরিদমের সঠিকতা নিয়ে সন্দেহ করি। এবং নিন , আমি এটি যেভাবে পড়ছি তা এটি ফিরে আসবে , যা ভুল। একটি একটিএকটিএকটি
খুর

উত্তর:


20

আপনার অ্যালগরিদম ভুল । আমি ধরে নিয়েছি আপনি কীভাবে প্রত্যয় অ্যারে এবং একটি স্ট্রিংয়ের LCP অ্যারে গণনা করতে জানেন তা হ'ল তাদের দক্ষ বাস্তবায়ন। মন্তব্যে যেমন উল্লেখ করা হয়েছে, আপনার প্রতিটি উপাদান কী এবং এটি কেন কাজ করে তা বোঝার চেষ্টা করা উচিত।

প্রথমত, একটি স্ট্রিংয়ের প্রত্যয় অ্যারে ( ) হয়। একটি প্রত্যয় অ্যারে মূলত স্ট্রিং এর সমস্ত প্রত্যয়কে আরোহিত লিক্সোগ্রাফিক ক্রমে সাজানো। আরো নির্দিষ্টভাবে, মান ইঙ্গিত করে যে এর প্রত্যয় অবস্থান থেকে শুরু স্থান হল সব প্রত্যয় এর lexicographic ক্রম মধ্যে ।এস এস এস [ i ] এস এস [ i ] আমি এসএসএকজনএসএসএকজন[আমি]এসএসএকজন[আমি]আমিএস

এরপরে অ্যারে রয়েছে। এবং থেকে শুরু হওয়া প্রত্যয়গুলির মধ্যে দীর্ঘতম সাধারণ উপসর্গের দৈর্ঘ্য নির্দেশ করে । এটি হ'ল লিক্সোগ্রাফিক ক্রমে সজ্জিত করার সময় এটি পরপর দুটি প্রত্যয়গুলির মধ্যে দীর্ঘতম সাধারণ উপসর্গের দৈর্ঘ্যের উপর নজর রাখে ।এল সি পি [ i ] এস [ i - 1 ] এস [ i ] এসএলসিপিএলসিপি[আমি]এসএকজন[আমি-1]এসএকজন[আমি]এস

উদাহরণ হিসাবে, স্ট্রিং বিবেচনা করুন । অভিধানের ক্রমের প্রত্যয়গুলি হবে , সুতরাং 1-সূচকযুক্ত অ্যারের জন্য। অ্যারের হবে ।{ একটি , একটি একটি একটি , একটি একটি , একটি একটি , একটি একটি , একটি , একটি } এস একজন = [ 7 , 1 , 4 , 3 , 2 , 5 ,এস=একটিএকটিএকটি{একটি,একটিএকটিএকটি,একটিএকটি,একটিএকটি,একটিএকটি,একটি,একটি}এল সি পি এল সি পি = [ - , 1 , 2 , 0 , 1 , 1 , 0 ]এসএকজন=[7,1,4,3,2,5,6]এলসিপিএলসিপি=[-,1,2,0,1,1,0]

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

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

উদাহরণ হিসাবে, এবং । তারপরে, । সাজানো প্রত্যয় হয় । বি = এস = একটি একটি # { একটি # , একটি একটি # , , # , বি সি বি সি # বি সি , সি ,একজন=একটিএকটিবি=এস=একটিএকটি#এস {abc#bc,abcabc#bc,bc,bc#bc,bcabc#bc,c,c#bc,cabc#bc}
SA=[4,1,8,5,2,9,6,3,7]LCP=[,3,0,2,2,0,1,1,0]

এখন, সর্বাধিক মান হ'ল , তবে এটি এবং , উভয়ই স্ট্রিং শুরু হয় । সুতরাং, আমরা এটি উপেক্ষা। অন্যদিকে, হয় (প্রত্যয় সাথে সঙ্গতিপূর্ণ এর ) এবং (সংশ্লিষ্ট প্রত্যয় থেকে এর )। সুতরাং, এটি দুটি স্ট্রিংয়ের মধ্যে দীর্ঘতম সাধারণ সাবস্ট্রিং। প্রকৃত সাবস্ট্রিং পাবার জন্য আপনাকে দৈর্ঘ্য নেওয়া (সর্বাধিক মান সম্ভবপর ) সাবস্ট্রিং থেকে শুরু পারেন বাএস [ 1 ] এস [ 2 ] এল সি পি [ 4 ] = 2 এস [ 3 ] বি সি বি এস [ 4 ] বি সি একটি বি সি # বি সি 2 এল সি পি এস [ 3 ] এস [LCP[2]=3SA[1]SA[2]ALCP[4]=2SA[3]bcBSA[4]bcabc#bcA2 LCPSA[3]SA[4] , যা ।bc


1
চমৎকার ব্যাখ্যা কিন্তু আমি মনে করি উদাহরণস্বরূপ একটু ভুল, সাজানো প্রত্যয় আছেন: {#bc,abc#bc,abcabc#bc,bc,bc#bc,bcabc#bc,c,c#bc,cabc#bc}, SA=[7,4,1,8,5,2,9,6,3]এবংLCP=[−,0,3,0,2,2,0,1,1]
সাউল মার্টিনেজ Vidals

1

আপনি অনলাইনে যে অ্যালগরিদম পেয়েছেন তা সম্পূর্ণ সঠিক নয়। পরেশের যেমন উল্লেখ করা হয়েছে, তার দেওয়া উদাহরণে এটি ব্যর্থ হবে।

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

আরও বিশদ এখানে


1
আপনি যখন "এই উত্তর" বলছেন, আপনার নিজের উত্তর বা অন্য কোনও উত্তর বোঝানো উচিত? দয়া করে কেবল উত্তর বাক্সটি প্রশ্নের উত্তর দেওয়ার জন্য ব্যবহার করুন, অন্য উত্তরের বিষয়ে মন্তব্য করার জন্য নয়। আপনি যথেষ্ট খ্যাতি অর্জন করেছেন, আপনি অন্যান্য উত্তর মন্তব্য করতে সক্ষম হবেন।
ডেভিড রিচার্বি

0

আমি মনে করি আপনি উল্লিখিত অ্যালগরিদমের মতো কিছু কাজ করা উচিত যদি অক্ষর সেটের অংশ নয় এমন একটি অক্ষর পৃথককারী হিসাবে ব্যবহৃত হয়, এবং প্রত্যয় / উপসর্গ অ্যারেগুলি পৃথক পৃথক স্ট্রিং বাদ দিতে নির্মিত হয় , সম্ভবত উদ্দেশ্যটির উদ্দেশ্য নকশাকার. এটি মূলত দুটি পৃথক স্ট্রিংয়ের জন্য প্রত্যয় / উপসর্গের অ্যারে তৈরির সমতুল্য।

আপনি যদি অ্যালগরিদমের কোনও লিঙ্ক পোস্ট করেন তবে ভবিষ্যতের রেফের জন্য এটি সহায়ক। নোট করুন যে উইকিপিডিয়ায় সিউডোকোড এবং অন্যান্য অনেক অ্যালগরিদমে এটির জন্য অ্যালগরিদম রয়েছে। এবং বেশিরভাগ স্ট্যান্ডার্ড ভাষায় অনলাইনে উপলব্ধ ভাষায় প্রয়োগ রয়েছে।

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