র‌্যাম এবং ট্যুরিং মেশিনের জটিলতার মধ্যে বড় ব্যবধান


9

যদি আমরা কেবল পি তে সমস্যাগুলি বিবেচনা করি তবে বিশেষ সমস্যার জন্য দ্রুততম ज्ञিত শব্দ-র‌্যাম অ্যালগরিদম এবং দ্রুততম পরিচিত টুরিং মেশিন অ্যালগরিদমের মধ্যে কোনও বড় ব্যবধান রয়েছে? সাধারণ আগ্রহের প্রাকৃতিক সমস্যার জন্য যদি বিস্তৃত ফাঁক থাকে তবে আমি বিশেষভাবে আগ্রহী।


6
একটি র‌্যাম মেশিন টিউরিং মেশিন দ্বারা ওভারহেড সহ সিমুলেটেড করা যায় O(nlogn)রানটাইমে সুতরাং সত্যিই বড় ফাঁক হবে না।
শাল

@ শ্যাওল কি কোনও প্রাকৃতিক / জনপ্রিয় সমস্যার জন্য আকারের একটি ব্যবধান বিদ্যমান?
লেম্বিক

3
প্যালিনড্রোম লাগে Ω(n2) একক টেপ টিএম-তে সময় (এবং হয়) O(n)র‌্যামে)। eecs.yorku.ca/course_archive/2008-09/W/6115/palindrome.pdf
SamM

6
শুলের মন্তব্যটি কেবল ননডেস্ট্রিমেন্টিক মেশিনগুলির জন্য এবং দ্বি-টেপ টিএম সেটিং-তে যতদূর আমি জানি is প্রশংসা, শাল?
রায়ান উইলিয়ামস

1
@ কিবিটি ৯3737 - বাহ, অতীত থেকে কী বিস্ফোরণ হয়েছে: আমি বিশ্বাস করি যে আমি একটি উদ্ধৃতি সরবরাহ করিনি কারণ আমার একটি ছিল না (বা এখন আমার কাছে নেই), এবং এটি রায়ান উইলিয়ামস সঠিক হতে পারে।
শাল

উত্তর:


6

এটি পরিচিত যে কোনও সমস্যা যা আপনি সময়মতো র‌্যাম মেশিনে গণনা করতে পারেন T(n), আপনি এটি বেশিরভাগ সময়ে টিউরিং মেশিনে করতে পারেন T(n)2। আপনার লক্ষ্য করা দরকার যে ব্যবহৃত মেমরির মোট আকারের চেয়ে বেশি হতে পারে নাT(n), যেহেতু এর অর্থ হ'ল আপনি এর চেয়ে বেশি লেখার কাজ করেছেন T(n), সুতরাং প্রতিবার আপনি যখন র‌্যাম মেমরি থেকে কিছু আনেন, ট্যুরিং মেশিনটি সবচেয়ে খারাপ অবস্থায় নেবে T(n)টেপ থেকে ক্রমানুসারে কাঙ্ক্ষিত উপাদানটি সন্ধান করার সময়। মেমরি অ্যাক্সেসের পাশাপাশি, অন্যান্য ক্রিয়াকলাপ একই সময়ে নেওয়া উচিত। এবং এইভাবে আপনি আবদ্ধ পেতে।


2
র‌্যামগুলি লগারিদমিক সময়ে ইনপুটটির দৈর্ঘ্য (এবং এভাবে দৈর্ঘ্যের পক্ষকেও) গণনা করতে পারে তবে বেসিক ট্যুরিং মেশিনগুলিকে সেই সমতাটি গণনা করার জন্য রৈখিক সময় প্রয়োজন।

1

নীচের উদাহরণে প্রমাণিত হয় যে একটি অ্যালগরিদম A যে লাগে O(nlog(n)) শব্দ-রামের কোনও সমস্যা সমাধানের জন্য প্রয়োজন হতে পারে O(n2log(n)3)একটি উপর 1-টেপ টুরিং মেশিন (TM) ঠিক executes যে সব হিসাব দ্বারা নির্দেশিতA। আমি বুঝতে পারি যে প্রশ্নটি 1-টেপ টিএম সম্পর্কিত, এবং আমি কেবলমাত্র আমার প্রতিক্রিয়াতে এটি ব্যবহার করি। এটি এমিল জেবেকের মন্তব্যগুলিকে সম্বোধন করার জন্য একটি সম্পাদনা।

আমরা নিম্নলিখিত আরও সাধারণ উপসংহার খুঁজে পাবেন । টিএম এর সমাধান করতে পারে তা প্রমাণ করার জন্যO(T(n)2) একটি সমস্যা সমাধান করা O(T(n)) একটি অ্যালগরিদম দ্বারা Aর্যাম উপর, এটা না যথেষ্ট রানAটিএম উপর। একটি চতুর অ্যালগরিদমের প্রয়োজন হতে পারে। কেউ প্রমান করতে চাইলে একই প্রয়োগ হয়O(nlog(n))ওভারহেড। একটি চতুর অ্যালগরিদমের অস্তিত্ব প্রমাণ যখনই প্রয়োজন তাত্ক্ষণিক থেকে দূরে মনে হয়, কমপক্ষে বলতে। এই না অন্যান্য প্রতিক্রিয়া সঙ্গে সঙ্গতিপূর্ণ মূলত শুধুমাত্র উত্থাপন করা অনুকরণ / টি এম উপর চালানো সব র্যাম গণনার (এলগরিদমA) টিএম জটিলতার মতো ঘোষণা করা O(T(n)2) অথবা O(T(n)nlog(n))

সমস্যা: আমাদের একটি অ্যারে / টেবিল দেওয়া হয়tab সঙ্গে n=2k প্রতিটি সংরক্ষণ করা পূর্ণসংখ্যার log(n)বিট। আমাদের একটি দ্বিতীয় অ্যারে দেওয়া হয়d সঙ্গে log(n) অবস্থানসমূহ, প্রতিটি এক একটি নম্বর রেকর্ডিং log(n)বিট। কোন জন্যt[0..log(n)1], আমরা সংজ্ঞায়িত করি Xt=1 যদি tab[i] MOD এর d[t]=tab[n/2+i] MOD এর d[t] i[0..n/21]। তা না হলে,Xt=0। আউটপুটt=0log(n)1Xt। আমি বিবেচনা করি ইনপুটটি টেপ হিসাবে দেওয়া হয়েছেnlog(n)+log(n)log(n) বাইনারি অঙ্কগুলি, এমিল জেব্যাকের মন্তব্যগুলিকে সম্বোধন করতে।

অ্যালগরিদম Aশব্দের আকারের সাথে র‌্যাম একটি র‌্যামw=log(n) চাহিদা O(nlog(n)+log(n)2) = O(nlog(n))বাইনারি স্ট্রিং ইনপুট ডেটা পড়তে। তবে ডেটা পড়ার পরে, এটি কেবলমাত্র শব্দ দিয়ে কাজ করতে পারেlog(n)আকার। অ্যালগরিদমA যে কোনও গণনা করে Xt ভিতরে O(n) সব দিয়ে যেতে i[0..n/21]এবং শর্ত পরীক্ষা। এর প্রধান লুপAহয় জন্যt=0,1,2,log(n)1: গণনা Xt। মোট জটিলতা হ'লO(nlog(n)) (তথ্য পড়ার) + O(nlog(n)) (গণনা করা), তাই A এটা সব করতে পারেন O(nlog(n)) র‌্যামে

অ্যালগরিদম A1-টেপ টিএম-তে: আমি এক-টেপ টিএম-এর প্রয়োজনীয়তার পক্ষে তর্ক করিO(n2log(n)2) একটি নির্দিষ্ট সময় জন্য t। টিএম এর দৃষ্টিকোণ থেকে নির্ধারণ করাAt দৈর্ঘ্যের দুটি বাইনারি স্ট্রিংয়ের সমতা পরীক্ষা করার সমতুল্য O(nlog(n))। উদাহরণস্বরূপ, এমওডি অপারেশনtab[i] MOD এর d[t] বিট অপসারণের সমতুল্য হতে পারে 0 এর tab[i]। যেমন ক্ষেত্রে, নির্ধারণAt দৈর্ঘ্যের বিট স্ট্রিংগুলিতে সমতা পরীক্ষার সমতুল্য n(log(n)1)/2। এটি সুপরিচিত যে দৈর্ঘ্যের দুটি স্ট্রিংয়ের সমতা পরীক্ষা করেm প্রয়োজন O(m2)1-টেপ টিএম-তে, তবে আমি এখনই সত্যিই একটি তথ্য খুঁজে পাচ্ছি না। তবে, আমি পিএসে একটি প্রমাণ সরবরাহ করি। যদি টিএম মূল লুপটি কার্যকর করেA, এটি কমপক্ষে ব্যয় করতে হবে O((nlogn)2) প্রতিটির জন্য, প্রত্যেকটির জন্য t=0,1,2,log(n)1, শেষ পর্যন্ত O(n2log(n)3)


পুনশ্চ. আমি বিট স্ট্রিংগুলির সাথে সমতা-পরীক্ষাটি দেখাইmবিটগুলি স্ট্রিংগুলির সাথে প্যালেন্ড্রোম-পরীক্ষার চেয়ে দ্রুততর হতে পারে নাm বিটস (প্যালেন্ড্রোম কমপক্ষে গ্রহণ করতে পরিচিত O(m2)সময়)। প্যালিনড্রোম সমাধানের জন্য সাম্য-পরীক্ষার জন্য আমরা যে কোনও টিএম অ্যালগরিদম পরিবর্তন করতে পারি। ধরুন সমতা-পরীক্ষার টিএম দুটি পূর্ণসংখ্যার সাথে শুরু হয়: মাথার বাম দিকে, একটি ডানদিকে (এটি টিএম এর সহজতম ইনপুট ফর্ম)। বাম পজিশনের প্রতিটি পদক্ষেপ ডান অবস্থানের উপর প্রতিবিম্বিত (প্রতিফলিত) হতে পারে। আমরা একটি মিররযুক্ত টিএম তৈরি করি: যখনই প্রাথমিক টিএম কোনও অবস্থানে থাকেx<0 (বাম দিকে), মিররযুক্ত টিএম অবস্থানে রয়েছে x(ডানদিকে). যদি কোনও টিএম এর চেয়ে কম ক্ষেত্রে সমতা পরীক্ষার সমাধান করেO(m2), এই পরিবর্তিত মিররযুক্ত টিএম এর চেয়ে কম প্যালিনড্রোম সমাধান করবে O(m2)

এছাড়াও, এখানে কিছু সমতা-পরীক্ষার টিএম অ্যালগরিদম রয়েছে এবং তাদের সকলের জন্য চতুর্ভুজ সময় প্রয়োজন কারণ তাদের কিছুটা জিগজ্যাগিং প্রয়োজন, উদাহরণস্বরূপ শিখুন মেশিন উদাহরণ 2 পাঠ্যক্রমের দেখুন দেখুন। lec3.pdf


প্যালিনড্রোমগুলির জন্য নিম্ন সীমাটি কেবল অপ্রাকৃত একক-টেপ মডেলের জন্য ধারণ করে। লিনিয়ার সময়টিতে একটি টিএম এর সাথে দুটি স্ট্রিংয়ের সমতা পরীক্ষা করা সোজা। লম্বা এন্ট্রিগুলির দুটি সিকোয়েন্সের সমতা রাখার জন্য এটি একই রকম holds এছাড়াও, প্রশ্নটি যে কোনওভাবেই বোঝার জন্য, উভয় মেশিনের মডেলগুলির ইনপুটগুলি অবশ্যই অভিন্ন হতে হবে, অর্থাত্, একটি সীমাবদ্ধ বর্ণমালার উপর স্ট্রিং হিসাবে লেখা। সুতরাং, প্রতিটি রেকর্ড পড়তে এবং এটিকে একটি শব্দে রূপান্তর করতে আপনার র‌্যামের সময় O (লগ এন) প্রয়োজন হবে, এই ক্রিয়াকলাপটি অর্থহীন।
এমিল জেব্যাক

@ এমিল জ্যাবেক, আমি আমার উত্তরটি সম্পাদনা করব তা বোঝাতে যে আমি কেবল 1-টেপ টিএম সম্পর্কে ভাবি। আপনি যখন বলেন যে কোনও টিএম রৈখিক সময়ে সমতা পরীক্ষা করতে পারে, আমি মনে করি আপনি একটি 2-টেপ টিএম ভাবেন। তবে, আমি বুঝতে পেরেছি যে পুরো প্রশ্নটি 1-টেপ টিএমএস সম্পর্কে is ইনপুট ফর্মটি সম্পর্কে, আমি অবশ্যই স্বীকার করব যে আপনি ঠিক থাকতে পারেন, কমপক্ষে কিছু শব্দ-র‌্যামের জন্য। তবে যতদূর আমি জানি, একটি সি ++ ইন্ট অ্যারে একের পর এক পূর্ণসংখ্যা কোনও বিভাজক ছাড়াই সঞ্চয় করে, যেন তারা একত্রিত করে বিটের ক্রমগুলি সঞ্চয় করে। 16 বিটের 10 টি ইনট ঠিক 160 বিট দখল করে, না? এমনকি এটি না হলেও, কেউ এইভাবে কাজ করে একটি মেশিন তৈরি করতে পারে।
ড্যানিয়েল পোরুম্বেল

3
জটিলতা তত্ত্বের স্ট্যান্ডার্ড টুরিং মেশিনের মডেলটি মাল্টি-টেপ। আমি এখানে C ++ যে কোনও প্রাসঙ্গিকতার সাথে দেখতে ব্যর্থ হয়েছি, আমরা সি ++ নয়, র‌্যাম মডেলটি নিয়ে আলোচনা করছি। এই মডেলটিতে স্বতন্ত্র মেমরির অবস্থানগুলি দৈর্ঘ্যের সংখ্যা ধরে রাখতে পারেO(logn), তবে আমরা এখনও কেবলমাত্র একটিতে (বা) চালাতে পারি O(1)) একবারে মেমরি অবস্থান। বিশেষত, আমরা কেবল একবারে ইনপুটটি এক জায়গায় অ্যাক্সেস করতে পারি: এমন কোনও ক্রিয়াকলাপ নেই যা আপনাকে "পড়তে" দেয়lognস্থির সময়ে ইনপুট অবস্থানগুলি এবং একসাথে একটি শব্দে বিভক্ত করুন।
এমিল জ্যাবেক

দুটি সম্ভাবনা রয়েছে: (1) ইনপুট অবস্থান [0] এ প্রথম সংখ্যার প্রথম বিট থাকে, অবস্থান [1] প্রথম সংখ্যার দ্বিতীয় বিট থাকে এবং এই জাতীয় কিছু। তারপরে এটি দরকারO(nlogn)র‌্যামে পড়ার সময়, ঠিক যেমন টুরিং মেশিনের মতো। সুতরাং, এমনকি একক-টেপ টিএম সহ, আপনি কেবল চতুর্ভুজীয় গতি অর্জন করতে পারেন। (২) ইনপুট অবস্থান [0] এ প্রথম সংখ্যা, অবস্থান [1] দ্বিতীয় সংখ্যা এবং আরও কিছু রয়েছে। তারপরে সমস্যাটি কোনও টিএম এ অর্থহীন, কারণ এটি এই ফর্মটির ইনপুট প্রক্রিয়া করতে পারে না। সুতরাং, আপনি মোটেও কোনও গতি অর্জন করতে পারবেন না, তবে এমন একটি সমস্যা যা কেবলমাত্র মেশিনের মডেলগুলির মধ্যে একটিতে প্রকাশযোগ্য।
এমিল জেব্যাক

ইমেল জ্যাবেক, আপনার মন্তব্য অনুসরণ করে, আমি একটি সমস্যা প্রস্তাব করার জন্য প্রশ্নটি সম্পাদনা করেছি এবং একটি র‌্যাম অ্যালগরিদম যা স্পষ্টভাবে গ্রহণ করে O(nlog(n))তথ্য পড়তে (একটি টেপ থেকে)। আমি আমার কিছু মন্তব্য সরিয়েছি যা এখন আর প্রাসঙ্গিক নয়। আমি আশা করি এটি আপনার সমস্যার সমাধান করা সমস্যার সমাধান করে।
ড্যানিয়েল পোরুম্বেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.