এন স্ট্রিং দেওয়া, তাদের মধ্যে একটির কি অন্যটির স্ট্রস্ট্রিং?


9

ধরুন আমাদের স্ট্রিং । আমি জানতে চাই যে এই স্ট্রিংগুলির মধ্যে কোনওটি সংগ্রহের অন্য কোনও স্ট্রিংয়ের একটি স্ট্রিং কিনা। অন্য কথায়, আমি নিম্নলিখিত কাজের জন্য একটি অ্যালগরিদম চাই:nS1,,Sn

ইনপুট:S1,,Sn

আউটপুট: যেমন যে একটি সাবস্ট্রিং এবং , অথবা যদি কোন ধরনের কোনটি থাকবেইi,jSiSjiji,j

এর জন্য কি কোনও কার্যকর অ্যালগরিদম আছে?

যদি আমরা "সাবস্ট্রিং" কে "উপসর্গ" এর সাথে প্রতিস্থাপন করি তবে একটি কার্যকর অ্যালগরিদম আছে (স্ট্রিংগুলি বাছাই করুন, তারপরে সংলগ্ন স্ট্রিংগুলির তুলনা করার জন্য লিনিয়ার স্ক্যান করুন; বাছাই করা নিশ্চিত করবে যে সাবস্ট্রিংগুলি সংলগ্ন কিনা)। তবে কোনও স্ট্রিং অন্য স্ট্রিংয়ের একটি সাবস্ট্রিং কিনা তা পরীক্ষা করা আরও চ্যালেঞ্জিং বলে মনে হয়। একটি নিষ্পাপ অ্যালগরিদম হ'ল সমস্ত জোড় উপরে পুনরাবৃত্তি হয় তবে এর জন্য স্ট্রিং টেস্টের প্রয়োজন। আরও কার্যকর অ্যালগরিদম আছে?i,jΘ(n2)

আমি অনুমান করি আমরা এই "অল-জুটি সাবস্ট্রিং টেস্টিং" বা এটির মতো কিছু বলতে পারি।

আমার চূড়ান্ত লক্ষ্য সংগ্রহের ছাঁটাই করা যাতে কোনও স্ট্রিং অন্য কোনও স্ট্রস্ট্রিং না হয়, একে একে সংগ্রহের অন্য কোনও কিছুর একটি স্ট্রিং removing


ইঙ্গিত: প্রত্যয় অ্যারে।
ছদ্মনাম

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

অ্যালেক্সিসওয়িলকে, সঠিক: এটি সবচেয়ে খারাপ ক্ষেত্রে সাবস্ট্রিং টেস্টের সংখ্যা (সবচেয়ে খারাপ পরিস্থিতি যেখানে কোনও স্ট্রিংই অন্য কোনও স্ট্রাস্টিং নয়)। দৈর্ঘ্য অনুসারে বাছাই করা আপনাকে কেবলমাত্র দুটি ফ্যাক্টর দেয়, যা অ্যাসিম্পটিকগুলি প্রভাবিত করে না। Θ(n2)
DW

উত্তর:


6

আপনি লিনিয়ার সময়ে একটি প্রত্যয় গাছ বানাতে পারেন এবং কোনও অভ্যন্তরীণ নোড রয়েছে যা পুরো স্ট্রিংয়ের সাথে মিল রয়েছে কিনা তা পরীক্ষা করতে পারেন (নোডের প্রতি ধ্রুবক সময়)।

আরও বিশদে স্ট্রিং ।s1,,snΣ

  1. একটি (সাধারণ) তৈরি করুন প্রত্যয় গাছ এর সঙ্গে স্বতন্ত্র টার্মিনাল চিহ্নিতকারী pairwise ।s1$1,s2$2,,sn$nn$1,,$nΣ

    উকোনেনের অ্যালগরিদম ব্যবহার করে , এটি লিনিয়ার সময়ে করা যায়; সমস্ত স্ট্রিং দৈর্ঘ্যের যোগফলে রৈখিক।

  2. ধরে নেওয়া যাক আপনার সাথে পাতার লেবেল যদি তারা প্রত্যয় প্রতিনিধিত্ব এর বৃক্ষ, তর্ক এবং যারা এটি লেবেল পাতার , অর্থাত্ পাতার যে পুরো মিলা স্ট্রিং।(i,j)si[j..|si|]sin(i,0)

    এটি গাছের আকারে সময় রৈখিক লাগে, যা নিজে ইনপুট আকারে লিনিয়ার।

  3. পিতামাতার বংশধর পাতা (যা edge an লেবেলযুক্ত একটি প্রান্ত দ্বারা পৌঁছেছে ) সেট থেকে সমস্ত ম্যাচ উপস্থাপন করে; এটি প্রত্যয় গাছের মৌলিক আক্রমণকারী থেকে অনুসরণ করা। যে কোনও পাতায় অবতরণ করে যে কোনও একটি ম্যাচ সন্ধান করুন (তবে )।(i,0)$i(i,0)

    এটি আবার রৈখিক সময় নেয়।

স্বতন্ত্র টার্মিনাল চিহ্নিতকারীগুলি সত্যই প্রয়োজনীয় নয়; যতক্ষণ আপনি পাতায় একাধিক লেবেলকে অনুমতি দেন ততক্ষণ পর্যন্ত সমস্ত স্ট্রিং বন্ধ করতে ব্যবহৃত এককটি যথেষ্ট যথেষ্ট।

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