ওয়াটসন-ক্রিক প্যালিনড্রোমগুলি স্বীকৃতি দেওয়ার স্পেস জটিলতা


10

আমার নিম্নলিখিত অ্যালগরিদমিক সমস্যা আছে:

স্পেসটি নির্ধারণ করুন ওয়াটসন-ক্রিক প্যালিনড্রোমগুলি যে ডিএনএ স্ট্রিংগুলি স্বীকৃতি দেওয়ার টিউরিং জটিলতা।

ওয়াটসন-ক্রিক প্যালিনড্রোমগুলি এমন স্ট্রিং যার বিপরীত পরিপূরকটি আসল স্ট্রিং। সম্পূরক সংজ্ঞায়িত করা হয় চিঠি প্রজ্ঞাময়, ডিএনএ দ্বারা অনুপ্রাণিত: একটি টি সম্পূরক ও C হয় ACGT একটি শৌচাগার- যে শব্দ কবিতা প্রভৃতি উলটা করিয়া পড়িলেও একই থাকে জন্য জি একটি সরল উদাহরণস্বরূপ পরিপূরক।

আমি এটিকে সমাধান করার দুটি উপায় নিয়ে এসেছি।

একের জন্য স্থান প্রয়োজন।O(n)

  • একবার মেশিনটি ইনপুট পড়ার পরে। বিপরীত ক্রমে ইনপুট টেপটি ওয়ার্ক টেপে অনুলিপি করতে হবে।
  • মেশিনটি তখন বাম থেকে ইনপুট এবং কাজের টেপগুলি পড়বে এবং ওয়ার্ক টেপের সেলটি যাচাই করতে প্রতিটি প্রবেশের সাথে তুলনা করবে ইনপুটটির ঘরের প্রশংসা। এর জন্য স্থান প্রয়োজন।O(n)

জন্য স্থান প্রয়োজন।O(logn)

  • ইনপুট পড়ার সময়। ইনপুট টেপটিতে প্রবেশের সংখ্যা গণনা করুন।
  • ইনপুট টেপ পড়া শেষ হলে
    • চিঠিটির পরিপূরকটি কাজের টেপটিতে অনুলিপি করুন
    • চিঠিটি এল টেস্টের শেষে কপি করুন
  • (লুপ পয়েন্ট) যদি কাউন্টার = 0, ওয়ার্কট্যাপটি সাফ করুন এবং হ্যাঁ লিখুন, তবে থামুন
  • যদি ইনপুট টেপটি এল পড়ে
    • কাউন্টার দ্বারা নির্দেশিত সংখ্যার সাহায্যে ইনপুট মাথাটি বাম দিকে সরান (দ্বিতীয় কাউন্টারের প্রয়োজন)
  • ইনপুট টেপ পড়লে আর
    • কাউন্টার দ্বারা নির্দেশিত সংখ্যার সাহায্যে ইনপুট মাথাটি ডান দিকে সরান (দ্বিতীয় কাউন্টারের প্রয়োজন)
  • যদি ওয়ার্কটিপে মান রাখে এমন ঘরটি যদি ইনপুট টেপের বর্তমান কক্ষের সাথে মেলে
    • দুই দ্বারা কাউন্টার হ্রাস
    • আর বা এল যথাক্রমে ওয়ার্ক টেপের উপর নির্ভর করে একটি বাম বা ডানদিকে সরান
    • এল বা আর এর পরিপূরকটি বর্তমান এল বা আর এর জায়গায় ওয়ার্কট্যাপে অনুলিপি করুন
    • লুপ চালিয়ে যান
  • মানগুলি যদি মেলে না, তবে ওয়ার্কট্যাপটি সাফ করুন এবং কোনও লিখবেন না, তবে থামুন

উভয় কাউন্টার, বর্তমান পরিপূরক এবং মান এল বা আর সংরক্ষণ করার জন্য এটি প্রায় স্পেসে আসে L2logn+2

আমার ইস্যু

প্রথমটির জন্য রৈখিক সময় এবং স্থান উভয়ই প্রয়োজন। দ্বিতীয়টির জন্য সময় এবং স্থান প্রয়োজন। আমাকে উদ্ধৃতি থেকে সমস্যাটি দেওয়া হয়েছিল এবং এই দুটি পদ্ধতির সাথে উপস্থিত হয়েছি, তবে কোনটি সাথে যেতে হবে তা আমি জানি না। আমার শুধু সমস্যার স্পেস জটিলতা দেওয়া দরকার।n22logn

আমি বিভ্রান্ত কারণ

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


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

উত্তর:


8

অস্বীকৃতি : নিম্নলিখিত অ্যালগরিদম সাবলাইনার স্পেস জটিলতার জন্য মানক মডেল ব্যবহার করে না (দেখুন ডাব্লুপি: ডিএসপিএসি ), কারণ এটি ইনপুট টেপটিতে লেখায়। উপরন্তু (ওয়াটসন-ক্রিক) palindromes সেট নেই । তবুও, এটি অনেকগুলি ব্যবহারিক উদ্দেশ্যে (যেমন প্রতিটি অক্ষর C তে থাকে) জন্য এটি একটি অন্তর্নিহিত সমাধান ।DSPACE(O(1))=REGchar

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

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

ইঙ্গিত: অতিরিক্ত স্থান কেন ব্যবহার করবেন, যখন আপনি ইনপুট দ্বারা দখল করা স্থানটি ব্যবহার করতে পারেন?

ইঙ্গিত: একসাথে একটি অক্ষর পরীক্ষা করে স্ট্রিং জুড়ে পিছনে পিছনে জিপ করুন - আপনি কোন অক্ষরটি যাচাই করছেন এবং আপনি ইতিমধ্যে যাচাই করেছেন এমন অক্ষর মুছে ফেলবেন তা মনে রাখতে টুরিং মেশিনের অবস্থাটি ব্যবহার করুন।


আমার দ্বিতীয় অ্যালগরিদম কি করে তা বোঝায়। একটি স্ট্রিং পেরিয়ে পিছনে যেতে আপনার কাউন্টারগুলির প্রয়োজন। দৈর্ঘ্যের ইনপুটটির জন্য আপনার কাউন্টারটি সঞ্চয় করতে লগ এন স্পেস প্রয়োজন। যদি না আমি ভুল বোঝাবুঝি করি তবে মনে হয় আপনি কোন অংশটির তুলনা করা হয়েছে তা ট্র্যাক না করে আপনি স্ট্রিং পেরিয়ে পিছনে যেতে পারবেন না
justausr

3
আপনার কাউন্টারটি কেন স্টোর করা দরকার?
ডেভ ক্লার্ক

যদি আমি ইনপুটটির শেষে পৌঁছে যাই এবং এটি 10 ​​অক্ষর দীর্ঘ। আমার 10 টি অক্ষর ফিরে যেতে হবে এবং ইনপুটটির শেষ অক্ষরটি কী ছিল তা সংরক্ষণ করতে হবে। একবার আমি শুরুতে পৌঁছানোর পরে আমি দ্বিতীয় চরিত্রটির তুলনা করি এবং অনুলিপি করি এবং ডান দিকে 7 বার চলে যাই এবং দ্বিতীয় অক্ষরটি 9 তমর সাথে মিলে যায় কিনা তা যাচাই করি। আমি এটি কীভাবে চালিয়ে যাচ্ছি না যদি না আমি এটি 7 বার জানতে পারি?
justausr

1
মাথা একবারে টেপটিতে এক জায়গায় থাকতে পারে তবে টিএমের স্থিতি মাথাটি যা দেখেছিল তা মনে করতে পারে এবং টেপটির কোন অংশটি ইতিমধ্যে পরিদর্শন করা হয়েছে তা নির্দেশ করতে অন্য অক্ষরগুলির সাহায্যে টেপ চিহ্নিত করতে পারে ( অ্যালগরিদমের নির্দিষ্ট পর্যায়ে)।
ডেভ ক্লার্ক

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

3

প্রশ্নটি আপনাকে যেভাবে জিজ্ঞাসা করা হচ্ছে সেটিকে মহাকাশের জটিলতায় উপরের বাউন্ড এবং নিম্ন সীমাটি নিয়ে আসা উচিত ।

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

দ্বিতীয় অংশটি সাধারণত অনেক কৌশলযুক্ত তবে আপনি সহজেই দেখিয়ে দিতে পারেন যে ধ্রুবক স্থান যথেষ্ট নয়, কারণ এটি আপনার ভাষাকে নিয়মিত করে তুলবে। এর সাথে পাম্পিং লেমা ব্যবহার করে , যেখানে অনুমান করা পাম্পিং নম্বরটি কৌশলটি করবে। এটি এখনও এবং মধ্যে একটি বৃহত্তর ব্যবধান ছেড়ে যায় ।alb2lallω(1)O(logn)

আমি একটি অনুশীলন পেয়েছি (Ex অনুশীলন দেখুন) যা কিছু ইঙ্গিত দেয়। যদি আমি তাদের ইঙ্গিতটি সঠিকভাবে ব্যাখ্যা করি তবে প্রমাণ করার চেষ্টা করুন যে প্রতিটি ইনপুট আকারের জন্য মাইহিল-নেরোড সম্পর্কের অনেকগুলি সমতুল্য শ্রেণি রয়েছে। এই আর্গুমেন্টের অনুরূপ যে আপনার চেয়ে বেশি পার্থক্য করতে পারে না দৈর্ঘ্যের স্ট্রিং (যেখানে আপনার টেপ বর্ণমালা এবং আপনার স্থান জটিলতা)। এটি আপনাকে lower এর নিম্ন সীমানা দেবে ।cΓs(n)nΓs(n)Ω(logn)


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


0

প্যালিনড্রোমগুলির জন্য ধ্রুপদী সময়-স্থান ট্রেডঅফ আপনার ক্ষেত্রেও সম্ভবত এটি সম্ভবত রয়েছে। এই ফলাফলটিতে বলা হয়েছে যে স্পেস প্যালিনড্রোমগুলি স্বীকৃতি দেওয়ার জন্য একটি ট্যুরিং মেশিন অবশ্যই সময় নিতে হবে , অর্থাৎ আপনার ক্ষেত্রে, প্রথম অ্যালগরিদমের এবং দ্বিতীয়টিতে । যে কেউ স্থানের নীচের সীমাটি হ'ল show । আমি সর্বোত্তম উপরের বাউন্ডটি কী তা খুঁজে পেতে সক্ষম হইনি - অর্থাৎ লোগারিদমিক স্থান এবং সময় ব্যবহার করে অ্যালগরিদম আছে কিনা বা সাধারণভাবে মানগুলির জন্যΩ ( এন 2 / এস ) সময় × স্পেস = Ω ( এন 2 ) টি এস = Θ ( এন 2 ) টি এস = Θ ( এন 2 লগ এন ) Ω ( লগ এন ) ( এন 2 / লগ এন ) এস Ω ( এন 2 / এস )SΩ(n2/S)

Time×Space=Ω(n2).
TS=Θ(n2)TS=Θ(n2logn)Ω(logn)O(n2/logn)Sআমরা কি সময় অর্জন করতে পারি । অনুশীলন হিসাবে, আপনি দুটি, হাইব্রিড অ্যালগরিদমগুলি আপনার দুটি অ্যালগরিদমকে মিশ্রিত করার চেষ্টা করতে পারেন।Ω(n2/S)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.