হ্যানয়ের টাওয়ারগুলির জটিলতা


20

হ্যানয়ের টাওয়ারগুলির জটিলতা সম্পর্কে আমি নিম্নলিখিত সন্দেহগুলির দিকে ঝুঁকলাম , যার ভিত্তিতে আমি আপনার মন্তব্যগুলি চাই।

  • এটি এনপিতে আছে? চেষ্টা করা উত্তর: মনে করুন পেজি (প্রবাদ) সমস্যাটি সমাধান করে এবং এটি ভিক্টরের কাছে জমা দিয়েছেন (যাচাইকারী) ভিক্টর সহজেই দেখতে পান যে সমাধানের চূড়ান্ত অবস্থাটি সঠিক (লিনিয়ার সময়ে) ঠিক আছে তবে পেগির প্রতিটি পদক্ষেপের মধ্য দিয়ে যাওয়ার কোনও বিকল্প নেই যে সে নিশ্চিত করে যে সে কোনও অবৈধ পদক্ষেপ না করেছে। যেহেতু পেগিকে সর্বনিম্ন 2 ^ | ডিস্ক তৈরি করতে হয়েছে - 1 পদক্ষেপ (প্রমাণযোগ্য), ভিক্টরকেও মামলা অনুসরণ করতে হবে। সুতরাং ভিক্টরের কোনও বহুপদী সময় যাচাইকরণ (এনপির সংজ্ঞা) নেই এবং তাই এনপিতে থাকতে পারে না।

  • এটি কি পিএসপিএসি-তে রয়েছে ? মনে হচ্ছে, তবে উপরের যুক্তিটি কীভাবে বাড়ানো যায় তা আমি ভাবতে পারি না।

  • এটি PSPACE- সম্পূর্ণ? মনে হচ্ছে না, তবে আমার কাছে কেবল একটি অস্পষ্ট ধারণা আছে। অটোমেটেড প্ল্যানিং, যার মধ্যে টোএইচ একটি নির্দিষ্ট উদাহরণ, পিএসপিএসিই-সম্পূর্ণ। আমি মনে করি যে টোএইচ-এর চেয়ে পরিকল্পনার অনেক বেশি শক্ত উদাহরণ রয়েছে।

আপডেট হয়েছে : ইনপুট = এন , ডিস্কের সংখ্যা; প্রতিটি পদক্ষেপে আউটপুট = ডিস্ক কনফিগারেশন। এটি আপডেট করার পরে, আমি বুঝতে পারি যে এই ইনপুট / আউটপুট ফর্ম্যাটটি কোনও সিদ্ধান্ত সমস্যার সাথে খাপ খায় না। আমি এই জাতীয় সমস্যার জন্য এনপি, পিএসপিএসি ইত্যাদির ধারণাগুলি ক্যাপচার করার জন্য সঠিক আনুষ্ঠানিককরণ সম্পর্কে নিশ্চিত নই।

আপডেট # 2 : কাভের এবং জেফের মন্তব্যের পরে, আমি সমস্যাটিকে আরও সুনির্দিষ্ট করে তুলতে বাধ্য করেছি:

ইনপুটটি ints এর জোড়া হতে দেয় (এন,আমি)যেখানে এন ডিস্কের সংখ্যা। যদি ডিস্কগুলির দ্বারা চালিত ক্রমের ক্রমটি বিন্যাসে (ডিস্ক-সংখ্যা, থেকে-পেগ, থেকে-পেগ) (ডিস্ক-সংখ্যা, থেকে-পেগ, থেকে-পেগ) লেখা থাকে ... প্রথম চাল থেকে শুরু করে সর্বশেষ, এবং বাইনারি এ এনকোড করা হয়েছে, আউটপুট আমি বিট।

যদি আমার এনকোডিং সম্পর্কে আরও সুনির্দিষ্ট হওয়া প্রয়োজন তবে আমাকে জানান। আমি মনে করি কাভেহের মন্তব্য এই ক্ষেত্রে প্রযোজ্য?


5
আপনি দয়া করে হ্যানয় সমস্যার টাওয়ারগুলি সংজ্ঞা দিতে পারেন বা একটি সংজ্ঞাটির সাথে লিঙ্ক করতে পারেন?
কাভেহ

1
পিকেজি, আমি জানি এটি হ্যানয়ের টাওয়ার কী। আমি বোঝাতে চেয়েছিলাম যে গণনার সমস্যাটি আপনি এর জটিলতা জানতে চান? ইনপুট কি? আউটপুট কি?
কাভেহ

@ কাভেঃ আপনার উদ্দেশ্যটি আপনার প্রথম মন্তব্য থেকে অস্পষ্ট ছিল
পিকেজি

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

1
সুতরাং পূর্ণসংখ্যা কি ইনপুট অংশ? i
জেফি

উত্তর:


9

না, আপনি যে সমস্যাটি বর্ণনা করেছেন তা আসলে বেশ সহজ। উচ্চ-স্তরের কারণ হ'ল সূচক মোটামুটি এন বিট দীর্ঘ, তাই আমরা আসলে n এ বহুবর্ষের সময় ব্যয় করতে পারি ।inn

নিম্নলিখিত সংশ্লিষ্ট সমস্যা বিবেচনা করুন: প্রদত্ত দুটি পূর্ণসংখ্যার এবং , বর্ণনা এর দ্রবণে তম পদক্ষেপ এন -disk ধাঁধা। ইনপুট আকার lg n + lg কে < এন + lg কে , কিন্তু বাস্তবে, n এর ক্ষেত্রে সবচেয়ে কম গুরুত্বপূর্ণ বিট থাকে সুতরাং lg k এন এর তুলনায় উল্লেখযোগ্য পরিমাণে ছোট হলেও আমরা ( লগ কে ) -তে বহু বহুবর্ষে এই সমস্যাটি সমাধান করতে পারি ।nkknlgn+lgk<n+lgknlgkএনহে(লগ)

ধরা যাক, ডিস্কগুলি থেকে আকার অনুযায়ী আকারে বাড়ানো যাই হোক না কেন, এবং পেগগুলি 0 = উত্স, 1 = গন্তব্য এবং 2 = অতিরিক্ত ছাড়িয়ে গণনা করা হয়েছে। আমাদের লিখুন যাক = ( 2 পি + + 1 ) 2 কিছু পূর্ণসংখ্যার জন্য পি এবং । তারপরে টার্ন কে :0=(2পি+ +1)2পি

  • যদি বিজোড় হয় তবে ডিস্ক ডি পেগ ( পি মোড 3 ) থেকে পেগ ( ( পি + 1 ) মোড 3 ) এ চলে যায়+ +এন(পিগেলিক ভাষার3)((পি+ +1)গেলিক ভাষার3)
  • যদি হয়, তবে ডিস্ক ডি প্যাগটি ( - পি মড 3 ) থেকে পেগ ( ( - পি - 1 ) মোড 3 ) রূপান্তর করে ।+ +এন(-পিগেলিক ভাষার3)((-পি-1)গেলিক ভাষার3)

আমরা সহজে কম্পিউট পারেন এবং সময় হে ( লগ ) বাইনারি উপস্থাপনা মাধ্যমে looping দ্বারা উর্ধ্বগামী অন্তত গুরুত্বপূর্ণ বিট থেকে। এটাই.পিহে(লগ)

এখন ধরা যাক আপনি আউটপুট ক্রমটিতে সত্যই বিট চান , যেখানে আমি পরিবর্তে ইনপুটটির অংশআমিআমি । প্রত্যেক পালা বিট একই নম্বর ব্যবহার করে এনকোড করা হয়, তাহলে - বিশেষভাবে, এলজি ( এন + + 1 ) ডিস্ক সংখ্যার জন্য বিট, 2 জন্য বিট, এবং-গোঁজ থেকে 2 জন্য বিট টু-গোঁজ - তারপর আমরা শুধু গনা আছে k তম সরানো, যেখানে k = i / ( lg ( n + 1 ) + 4 ) এলজি(এন+ +1)22=আমি/(এলজি(এন+ +1)+ +4), এবং তারপরে যথাযথ বিটটি বের করুন। (লক্ষ করুন যে ইনপুট আকারে লিনিয়ার, যেহেতু আউটপুট নির্ধারণের জন্য আমাদের n জানতে হবে))এলজি(এন+ +1)+ +4এন

অন্যদিকে, আমরা যদি ডিস্ক সংখ্যার জন্য একটি চলক-দৈর্ঘ্যের উপস্থাপনা ব্যবহার করি, তবে আমরা বাইনারি অনুসন্ধানের মাধ্যমে বহুবর্ষে মুভি সংখ্যা সন্ধান করতে পারি। সমস্ত এম কে জন্য শীর্ষ মি ডিস্কগুলি সরানোর জন্য আমাদের মোট টার্নগুলির সংখ্যা জানতে হবে, তবে এটি পুনরুক্তি দ্বারা এম ( এম ) = 2 এম ( এম - 1 ) + ( moving # বিটগুলি মুভিং রেকর্ড করতে দেওয়া হয়েছে ) ডিস্ক  এম ) যা আমরা গতিশীল প্রোগ্রামিংয়ের মাধ্যমে বহুপদী সময়ে মূল্যায়ন করতে পারি। বাকী বিশদটি পাঠকের জন্য এক বিরক্তিকর অনুশীলন হিসাবে ছেড়ে গেছে।মিমি

এম(মি)=2এম(মি-1)+ +(চলন্ত ডিস্ক রেকর্ড করতে # বিট মি)

(আমি ধরে নিলাম আমি কমপক্ষে একটি অফ-বাই-ওয়াইন বা প্যারিটি ত্রুটি করেছি, তবে আশা করি মূল ধারণাটি পরিষ্কার।

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