ডায়নামিক প্রোগ্রামিংয়ের ক্ষেত্রে কেস ডিস্টিনেশন: উদাহরণ প্রয়োজন!


19

আমি কিছুদিন ধরে ডায়নামিক প্রোগ্রামিংয়ে কাজ করছি। গতিশীল প্রোগ্রামিং পুনরাবৃত্তির মূল্যায়ন করার ক্যানোনিকাল পদ্ধতিটি হ'ল সমস্ত প্রয়োজনীয় মানের একটি সারণী তৈরি করে এবং একে একে সারিবদ্ধভাবে পূরণ করা। উদাহরণস্বরূপ Cormen, Leiserson et al দেখুন: একটি পরিচিতির জন্য "অ্যালগরিদমের ভূমিকা"

আমি দুটি মাত্রায় টেবিল-ভিত্তিক কম্পিউটিং স্কিমটিতে ফোকাস করি (সারি-সারি সারি ফিলিং) এবং সেল নির্ভরতাগুলির কাঠামোটি তদন্ত করি, অর্থাৎ অন্য কোষগুলি গণনা করার আগে কোন কোষগুলি করা দরকার। আমরা কোষের সূচকগুলির সেট । এর উপর নির্ভর করেনোট করুন চক্র মুক্ত থাকতে হবে।Γ(i)iΓ

আমি প্রকৃত ফাংশনটি বিমূর্ত করি যা গণনা করা হয় এবং এর পুনরাবৃত্ত কাঠামোর দিকে মনোনিবেশ করে। আনুষ্ঠানিকভাবে, আমি একটি recurrrence বিবেচনা হতে গতিশীল প্রোগ্রামিং যদি এটা ফর্ম আছেd

(আমি)=(আমি,Γ~(আমি))

0 , এবং কিছু (গণনাযোগ্য) ফাংশন যা মাধ্যমে ব্যবহার করে না ।আমি[0...মি]×[0...এন]Γ~(আমি)={(,())|Γ(আমি)}Γ~

এর গ্রানুলারিটিটি রুক্ষ অঞ্চলগুলিতে (বামদিকে, উপরে-বাম দিকে, শীর্ষে, উপরের ডানদিকে ... বর্তমান সেলটিতে) সীমাবদ্ধ করার সময় একজন পর্যবেক্ষণ করে যে বৈধতার জন্য মূলত তিনটি কেস (প্রতিসাম্য এবং আবর্তন পর্যন্ত) রয়েছে গতিশীল প্রোগ্রামিং পুনরাবৃত্তি যা টেবিলটি পূরণ করা যায় তা জানিয়ে দেয়:Γ

গতিশীল প্রোগ্রামিং সেল নির্ভরতা তিনটি ক্ষেত্রে

লাল এলাকাসমূহ (overapproximations এর) বোঝাতে । কেস এক এবং দুটি সাবটেট স্বীকার করে, কেস তিনটি সবচেয়ে খারাপ ক্ষেত্রে (সূচী রূপান্তর পর্যন্ত)। নোট করুন যে পুরো লাল অঞ্চলগুলি দ্বারা আচ্ছাদিত করা দরকার তা কঠোরভাবে প্রয়োজন হয় না ; টেবিলের প্রতিটি লাল অংশের কিছু কোষ এটিকে লাল রঙ করার জন্য যথেষ্ট। সাদা অঞ্চলগুলি স্পষ্টভাবে কোনও প্রয়োজনীয় কোষ না রাখার জন্য প্রয়োজনীয় ।ΓΓ

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

তিনটি কেসের জন্য আমার কাছে (প্রাকৃতিক) উদাহরণ নেই, যদিও! সুতরাং আমার প্রশ্নটি: তিনটি ক্ষেত্রে গতিশীল প্রোগ্রামিং পুনরাবৃত্তি / সমস্যাগুলির উদাহরণ কী?


2
কেস 3 কেস 1 এবং 2
সাবসুমেন্ট করে

না, না, চেহারা সত্ত্বেও। উদাহরণস্বরূপ, একজন কেস 1 উদাহরণস্বরূপ যখন একটি মামলা 3 উদাহরণস্বরূপ, উপরের বাম দিকের এলাকায় একটি প্রয়োজনীয় সেল থাকতে পারে না হয়েছে উপরের বাম এলাকায় একটি প্রয়োজনীয় সেল আছে। আমি স্পষ্ট করে ব্যাখ্যাটি সম্পাদনা করেছি।
রাফেল

উত্তর:


15

গতিশীল প্রোগ্রামিং অ্যালগরিদমের প্রচুর অন্যান্য উদাহরণ রয়েছে যা আপনার প্যাটার্নে মোটেই খাপ খায় না।

  • দীর্ঘতম বর্ধমান উপসর্গের সমস্যার জন্য কেবলমাত্র এক-মাত্রিক টেবিলের প্রয়োজন requires

  • বেশ কয়েকটি প্রাকৃতিক গতিশীল প্রোগ্রামিং অ্যালগরিদম রয়েছে যার টেবিলগুলিতে তিন বা আরও বেশি মাত্রার প্রয়োজন। উদাহরণস্বরূপ: বিটম্যাপে সর্বাধিক-অঞ্চল সাদা আয়তক্ষেত্রটি সন্ধান করুন। প্রাকৃতিক গতিশীল প্রোগ্রামিং অ্যালগরিদম ত্রি-মাত্রিক টেবিল ব্যবহার করে।

  • তবে সবচেয়ে গুরুত্বপূর্ণ, গতিশীল প্রোগ্রামিংগুলি টেবিলগুলি সম্পর্কে নয় ; এটি অনিচ্ছাকৃত পুনরাবৃত্তি সম্পর্কে। অনেকগুলি প্রাকৃতিক গতিশীল প্রোগ্রামিং অ্যালগরিদম রয়েছে যেখানে মধ্যবর্তী ফলাফলগুলি সংরক্ষণের জন্য ব্যবহৃত ডেটা স্ট্রাকচার কোনও অ্যারে নয়, কারণ পুনরাবৃত্তিটি অবাঞ্ছিত হয়ে পূর্ণসংখ্যার পরিসর ছাড়াই নয়। দুটি সহজ উদাহরণ হ'ল একটি গাছের বৃহত্তম বৃহত্তম শীর্ষ কোণ নির্ধারণ করা এবং দুটি গাছের বৃহত্তম সাধারণ সাবট্রি খুঁজে পাওয়া। আরও জটিল উদাহরণ হ'ল -অরোরা এবং মিচেলের ইউক্লিডিয়ান ভ্রমণ বিক্রয়কর্ম সমস্যার জন্য অ্যাপপ্রক্সিমেশন অ্যালগরিদম।(1+ +ε)


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

9
ঠিক আছে, তবে আমি সত্যিই মনে করি আপনি পয়েন্টটি মিস করছেন।
জেফই

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

2
@ রাফেল সঠিক। আমার "উত্তর" কোনও উত্তর নয় বরং প্রশ্নের সমালোচনা, তবে কোনও মন্তব্যের জন্য এটি দীর্ঘ ছিল।
জেফই

3

একজন(মি,এন)একজন(মি,এন-1)একজন(মি-1,)

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


1
একজন(মি-1,একজন(মি,এন-1))

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

@ জুলস: ক্যানোনিকাল টেবিল স্কিমের সমস্যাটি হ'ল আপনি টেবিলে আকারের কোনও অগ্রাধিকারের উপর আবদ্ধ একটি (আদিম পুনরাবৃত্ত) জানেন না। অবশ্যই আপনি স্মৃতিচারণ করতে পারেন, তবে সাধারণত সাধারণভাবে নয়। সুতরাং হ্যাঁ, এটি ডিপির পক্ষে কার্যকর হতে পারে তবে আমার প্রশ্নের সাথে সম্পর্কিত সমস্যার শ্রেণিতে এটি খাপ খায় না।
রাফেল

1
আমি মনে করি না যে এটি ডিপির জন্য আপনার টেবিলের আকারের কোনও প্রাইমারি আবদ্ধ আছে? আসলে জেফই যেমন উল্লেখ করেছেন, ক্যাশে মোটেও একটি টেবিল হতে হবে না। এটি কোনও সহযোগী ডেটা স্ট্রাকচার হতে পারে। ডিপি আসলেই খুব সহজ একটি ধারণা: আপনি পুনরাবৃত্তভাবে সংজ্ঞায়িত ফাংশনটি গণনা করতে চান তবে এই ফাংশনটি একই যুক্তিতে বারবার ডাকা হয়। ডিপি হ'ল অপটিমাইজেশন যেখানে আপনি প্রতিটি কেস একবারে গণনা করে তা নিশ্চিত করার জন্য আপনি একটি ক্যাশে প্রবর্তন করেন। প্রচুর ফাংশন রয়েছে যা আপনার দুটি ক্ষেত্রেই উপযুক্ত নয়, এমনকি যদি এটি দুটি সীমাবদ্ধ পূর্ণসংখ্যার ফাংশন হয়।
জুলাই

2

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

সুতরাং নিয়মটি এরকম কিছু:

diagMatrix


1
এটি লিখিতভাবে এটি কোনও ক্ষেত্রেই খাপ খায় না। যাইহোক, আপনি যদি 45 ডিগ্রি দ্বারা ঘড়ির কাঁটার দিকে ঘোরেন তবে আপনি কেস 2 পাবেন (এবং সমস্ত সংযুক্ত বৈশিষ্ট্য)। এটি অন্যান্য উদাহরণগুলির ক্ষেত্রেও সত্য যা তির্যক থেকে কোনও কোণেও কাজ করে। তবে এটি উল্লেখ করার জন্য ধন্যবাদ!
রাফেল

@ রাফেল এটি অবিলম্বে সুস্পষ্ট নয় যে এগুলি সমতুল্য, আপনি আপনার প্রশ্নের মধ্যে এটি উল্লেখ করতে চাইতে পারেন।
জো

0

আমি এর নির্বোধ উদাহরণ জানি, তবে আমি মনে করি একটি সাধারণ পুনরাবৃত্তি সমস্যা এর মতো

বর্গ ম্যাট্রিক্সে সংখ্যার যোগফলটি সন্ধান করুন

যোগ্য হতে পারে। গতানুগতিক "প্রতিটি কলামের প্রতিটি সারি জন্য" কিন্ডা আপনার কেস 3 এর মতো দেখাচ্ছে।


-1

এটি ঠিক যে সন্ধানের জায়গাটি আপনি খুঁজছেন তা নয় তবে আমার মাথার উপরের অংশের একটি ধারণা আছে যা সম্ভবত সহায়ক হতে পারে।

সমস্যা:

এন×এনএমএক্সএম

উত্তর

এটি নিম্নলিখিত পুনরাবৃত্তিমূলকভাবে সমাধান করা যেতে পারে:

=1+ +এন2এক্সমি,এক্স<মি,মিআমি,আমিএনএন1/4এক্স>মি,1/4। সুতরাং প্রথম পুনরাবৃত্তির পরে, অনুসন্ধান স্থানটির আকার হয়ে যায়34এন2এক্স(34)3এন2


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