আমার স্থানীয় স্কোয়াশ ক্লাবে, একটি মই রয়েছে যা নীচের মত কাজ করে।
- মরসুমের শুরুতে আমরা একটি পৃথক লাইনে ক্লাবের প্রতিটি সদস্যের নাম সহ একটি টেবিল তৈরি করি।
- তারপরে আমরা প্রতিটি নামের পাশে গেমসের সংখ্যা এবং খেলাগুলির সংখ্যা লিখি (ফর্মটিতে: প্লেয়ারের জয় / গেমস)।
এইভাবে মরসুমের শুরুতে টেবিলটি দেখতে এমন লাগে:
Carol 0/0
Billy 0/0
Alice 0/0
Daffyd 0/0
যে কোনও খেলোয়াড় একটি ম্যাচ খেলতে পারে, এতে একজন খেলোয়াড় জিততে পারে। যদি টেবিলের নীচের অংশের প্লেয়ারটি জিততে পারে তবে খেলোয়াড়দের অবস্থান পরিবর্তন করা হয়। তারপরে আমরা প্রতিটি পদক্ষেপের ২ বার পুনরুক্তি করি এবং প্রতিটি খেলোয়াড়ের পাশের জয় এবং গেমের সংখ্যা আপডেট করে থাকি। উদাহরণস্বরূপ, অ্যালিস যদি বিলিকে মারধর করে তবে আমাদের আছে
Carol 0/0
Alice 1/1
Billy 0/1
Daffyd 0/0
এই ম্যাচগুলি পুরো মরসুম জুড়ে চলে এবং ফলস্বরূপ খেলোয়াড়দের আনুমানিক শক্তি ক্রমে তালিকাভুক্ত করা হয়।
দুর্ভাগ্যক্রমে, হালনাগাদটি বরং এক অচল পথে ঘটে তাই ভুল হয়। নীচে অবৈধ টেবিলগুলির কয়েকটি উদাহরণ দেওয়া আছে, যা কিছু শুরুর আদেশের জন্য উপরের পদক্ষেপগুলি সঠিকভাবে অনুসরণ করে তৈরি করা যায়নি (মরসুমের শুরুতে আমরা যে আদেশটি ব্যবহার করেছি তা ভুলে গিয়েছি) এবং ম্যাচগুলি এবং ফলাফলগুলির ক্রম:
Alice 0/1
Billy 1/1
Carol 0/1
Daffyd 0/0
Alice 2/3
Billy 0/1
Carol 0/0
Daffyd 0/0
Alice 1/1
Billy 0/2
Carol 2/2
Daffyd 0/1
একটি সারণী দেওয়া, আমরা কার্যকরভাবে এটি কার্যকর কিনা তা নির্ধারণ করতে পারি? আমরা নিম্নলিখিতটি উল্লেখ করে শুরু করতে পারি:
নামগুলির ক্রম কোনও ব্যাপার নয়, যেহেতু আমরা আসল শুরুর আদেশটি ভুলে গিয়েছি।
মোট জয়ের সংখ্যা খেলাগুলির সংখ্যার অর্ধেক যোগ হওয়া উচিত। (এটি দেখায় যে উপরের প্রথম উদাহরণটি অবৈধ))
- ধরুন টেবিলটি বৈধ is তারপরে একটি মাল্টিগ্রাফ রয়েছে - একটি গ্রাফ একাধিক প্রান্তকে স্বীকার করে তবে কোনও লুপ নেই - প্রতিটি খেলোয়াড়ের সাথে প্রতিটি ভার্টেক্সের সাথে মিলিত হয় এবং প্রতিটি প্রান্ত ম্যাচের সাথে মিলিত হয়। তারপরে প্রতিটি খেলোয়াড়ের দ্বারা খেলানো মোট খেলাগুলির বহুগুণে প্লেয়ারের ভার্টেক্সের ডিগ্রির সাথে মিল রয়েছে। সুতরাং যদি উপযুক্ত ভার্টেক্স ডিগ্রিগুলির সাথে কোনও মাল্টিগ্রাফ না থাকে, তবে অবশ্যই টেবিলটি অবৈধ। উদাহরণস্বরূপ, এক ডিগ্রি এক এবং একটি ডিগ্রি তিনটির একটি ভার্টেক্স সহ কোনও মাল্টিগ্রাফ নেই, তাই দ্বিতীয় উদাহরণটি অবৈধ। [আমরা এই জাতীয় মাল্টিগ্রাফের অস্তিত্বের জন্য দক্ষতার সাথে পরীক্ষা করতে পারি]]
সুতরাং আমাদের দুটি চেক রয়েছে যা দিয়ে শুরু করার জন্য আমরা আবেদন করতে পারি, তবে এটি তৃতীয় উদাহরণের মতো অবৈধ টেবিলগুলিকে অনুমতি দেয়। এই টেবিলটি অবৈধ আছে তা দেখতে, আমরা টেবিলটি উত্থাপিত হতে পারে এমন সমস্ত সম্ভাব্য উপায়ে ক্লান্ত হয়ে পিছনের দিকে কাজ করতে পারি।
আমি ভাবছিলাম যে এই সিদ্ধান্তটির সমস্যা সমাধানের জন্য অ্যালগোরিদমটি কোনও বহুপদী সময় (প্লেয়ার সংখ্যা এবং গেমের সংখ্যায়) কেউ ভাবতে পারেন কিনা?