একটি সরাসরি উপায় হ'ল একটি পুনরাবৃত্ত পদ্ধতি যা প্রতিটি অনুরোধের জন্য নিম্নলিখিত করে। পদ্ধতির ইনপুটটি এমন জোড়গুলির তালিকা যা ইতিমধ্যে বেছে নেওয়া হয়েছে এবং সমস্ত জোড়ার একটি তালিকা।
- ইতিমধ্যে ইনপুট তালিকার আওতায় থাকা স্বল্পতম সংখ্যার গণনা করুন। প্রথম অনুরোধের জন্য, এটি অবশ্যই 0 হবে, কারণ কোনও জোড়া বেছে নেওয়া হয়নি।
- যদি সমস্ত সংখ্যা আচ্ছাদিত থাকে তবে আপনার একটি সঠিক সমন্বয় রয়েছে, এটিকে মুদ্রণ করুন এবং পূর্ববর্তী পদক্ষেপটি ফিরিয়ে দিন। অন্যথায়, অনাবৃত সবচেয়ে ছোট সংখ্যাটি আমরা লক্ষ্য করব।
- লক্ষ্য নম্বরটি কভার করার জন্য উপায়টি খুঁজছেন এমন জুড়িগুলি অনুসন্ধান করুন। যদি কিছুই না থাকে তবে কেবল পুনরাবৃত্তির আগের স্তরে ফিরে আসুন।
- যদি লক্ষ্য নম্বরটি কভার করার কোনও উপায় থাকে, তবে প্রথমটিটি বেছে নিন এবং পুনরায় পুনরুদ্ধার করে পুরো প্রক্রিয়াটি আবার কল করুন, এই জুটিটি বেছে নেওয়া জোড়ের তালিকায় যুক্ত করুন।
- এটি যখন ফিরে আসে, পূর্বের নির্বাচিত জোড়াকে ওভারল্যাপ না করে কোনও জোড় দিয়ে লক্ষ্য নম্বরটি কভার করার পরবর্তী উপায়টি সন্ধান করুন। যদি আপনি এটির সন্ধান পান তবে এটি বাছুন এবং পুনরাবৃত্তভাবে পরবর্তী পদ্ধতিতে কল করুন।
- লক্ষ্য সংখ্যাটি কভার করার আরও কোনও উপায় না পাওয়া পর্যন্ত 4 এবং 5 পদক্ষেপ চালিয়ে যান। জোড়গুলির পুরো তালিকাটি দিয়ে যান। যখন আরও সঠিক পছন্দ নেই, পুনরাবৃত্তির আগের স্তরে ফিরে আসুন।
এই অ্যালগরিদমটি ভিজ্যুয়ালাইজ করার উপায়টি এমন একটি গাছের সাথে রয়েছে যার পথগুলি অ ওভারল্যাপিং জোড়গুলির ক্রম sequ গাছের প্রথম স্তরে সমস্ত জোড় থাকে যা 0 থাকে above উপরের উদাহরণস্বরূপ, গাছটি
মূল
|
----------------
| | |
(0,1) (0,2) (0,3)
| | |
(2,3) (1,3) (1,2)
এই উদাহরণে গাছের মধ্য দিয়ে সমস্ত পাথ প্রকৃতপক্ষে সঠিক সংগ্রহ দেয়, তবে উদাহরণস্বরূপ আমরা যদি এই জুটিটি (১,২) রেখে দিয়ে থাকি তবে ডানদিকের রাস্তায় কেবল একটি নোড থাকবে এবং ৩ য় ধাপে অনুসন্ধান ব্যর্থ হবে correspond
নির্দিষ্ট ধরণের সমস্ত অবজেক্টকে গণনা করার অনুরূপ অনেক সমস্যার জন্য এই ধরণের অনুসন্ধান আলগোরিদিমগুলি বিকাশ করা যেতে পারে।
এটি প্রস্তাবিত হয়েছিল যে সম্ভবত ওপি বলতে বোঝায় যে সমস্ত জুটি ইনপুটটিতে রয়েছে, কেবল প্রশ্ন হিসাবে সেগুলির একটি সেট নয়। সেক্ষেত্রে অ্যালগরিদম আরও সহজ কারণ কোন জোড়ের অনুমতি রয়েছে তা যাচাই করার দরকার নেই। এমনকি সমস্ত জোড়া সেট তৈরি করাও প্রয়োজনীয় নয়; নিম্নলিখিত সিউডোকোড ওপি যা বলেছে তা করবে। এখানে ইনপুট সংখ্যা "তালিকা" একটি খালি তালিকা হিসাবে আরম্ভ আউট, এবং "আবৃত" দৈর্ঘ্যের একটি অ্যারের হয়, 0 সক্রিয়া এটা কিছুটা আরও দক্ষ করা সম্ভব হয়েছে কিন্তু যে আমার তাৎক্ষণিক লক্ষ্য নয়।এনnn
sub cover {
i = 0;
while ( (i < n) && (covered[i] == 1 )) {
i++;
}
if ( i == n ) { print list; return;}
covered[i] = 1;
for ( j = 0; j < n; j++ ) {
if ( covered[j] == 0 ) {
covered[j] = 1;
push list, [i,j];
cover();
pop list;
covered[j] = 0;
}
}
covered[i] = 0;
}