সমস্যা সম্পর্কে আমার বোঝার বিষয়টি যেমন মুলত বলা হয়েছে এবং তারপরে ম্যাকের জবাব অনুসারে মন্তব্য দ্বারা আপডেট করা হয়েছে সেগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে: 1) উভয় প্রান্তের (নির্ভরতা এবং দ্বন্দ্ব) নির্দেশিত; ২) দুটি নোড যদি এক প্রান্ত দিয়ে সংযুক্ত থাকে তবে সেগুলি অন্য দ্বারা সংযুক্ত করা উচিত নয়, এমনকি এটি অন্য ধরণের বা বিপরীতে রয়েছে; 3) যদি দুটি নোডের মধ্যে একটি পাথ বিভিন্ন ধরণের প্রান্তকে মিশ্রিত করে তৈরি করা যায়, তবে এটি একটি ত্রুটি, এমন একটি পরিস্থিতিতে নয় যা উপেক্ষা করা হয়; ৪) যদি এক প্রান্তের প্রান্ত ব্যবহার করে দুটি নোডের মধ্যে কোনও পথ থাকে, তবে অন্য ধরণের প্রান্ত ব্যবহার করে তাদের মধ্যে আর কোনও পথ নাও থাকতে পারে; ৫) একটি একক প্রান্ত টাইপ বা মিশ্র প্রান্ত প্রকারের চক্রের অনুমতি নেই (অ্যাপ্লিকেশনটির অনুমান থেকে, আমি নিশ্চিত নই যে কেবল দ্বন্দ্ব-চক্র একটি ত্রুটি, তবে এই শর্তটি সরানো যেতে পারে, না হলে))
তদুপরি, আমি ধরে নেব যে ব্যবহৃত ডেটা কাঠামো এই প্রয়োজনীয়তাগুলির লঙ্ঘনকে প্রকাশ করা বাধা দেয় না (উদাহরণস্বরূপ, নোড-জোড়া সর্বদা নোড-জোড় থেকে (প্রকার, দিকনির্দেশ) মানচিত্রে গ্রাফ লঙ্ঘনকারী শর্ত 2 প্রকাশ করা যায়নি প্রথমে সর্বনিম্ন-সংখ্যাযুক্ত নোড রয়েছে)) যদি কিছু ত্রুটি প্রকাশ করা যায় না, তবে এটি বিবেচনার জন্য মামলার সংখ্যা হ্রাস করে।
এখানে তিনটি গ্রাফ রয়েছে যা এখানে বিবেচনা করা যেতে পারে: একচেটিয়াভাবে একটি প্রান্ত টাইপের দুটি এবং দুটি প্রকারের মধ্যে একটির মিশ্রিত মিশ্র গ্রাফ। আপনি কিছু নোড পর্যন্ত সমস্ত গ্রাফকে নিয়মিতভাবে উত্পন্ন করতে এটি ব্যবহার করতে পারেন। প্রথমে এন নোডের দুটি সম্ভাব্য গ্রাফ তৈরি করুন যেকোন দুটি অর্ডারযুক্ত নোডের মধ্যে একের বেশি প্রান্ত নেই (অর্ডারযুক্ত জোড় কারণ এটি নির্দেশিত গ্রাফ।) এখন এই গ্রাফের সমস্ত সম্ভাব্য জোড়া নিন, একটি নির্ভরতা এবং অন্যটি প্রতিনিধিত্বকারী প্রতিনিধিত্ব করে, এবং প্রতিটি জোড়া ইউনিয়ন গঠন।
যদি আপনার ডেটা স্ট্রাকচার শর্ত ২ এর লঙ্ঘন প্রকাশ করতে না পারে, তবে নির্ভরতা গ্রাফের ফাঁকে ফাঁকে ফাঁকে ফাঁকে ফাঁকে ফাঁকে ফাঁকা ফাঁকা জায়গাগুলির মধ্যে থাকা সম্ভাব্য সমস্ত দ্বন্দ্ব গ্রাফগুলি তৈরি করে বা তদ্বিপরীতভাবে আপনি বিবেচনার জন্য কেসগুলি উল্লেখযোগ্যভাবে হ্রাস করতে পারেন। অন্যথায়, ইউনিয়ন গঠনের সময় আপনি শর্ত 2 লঙ্ঘন সনাক্ত করতে পারেন।
প্রথম নোড থেকে সম্মিলিত গ্রাফের প্রস্থের প্রথম প্রান্তে, আপনি প্রতিটি পৌঁছনযোগ্য নোডের সমস্ত পাথের সেট তৈরি করতে পারেন এবং এটি করার সাথে সাথে আপনি সমস্ত শর্ত লঙ্ঘনের জন্য পরীক্ষা করতে পারেন (চক্র সনাক্তকরণের জন্য, আপনি টার্জনের অ্যালগোরিদম ব্যবহার করুন ))
গ্রাফটি সংযোগ বিচ্ছিন্ন থাকলেও আপনাকে কেবল প্রথম নোড থেকে পাথগুলি বিবেচনা করতে হবে, কারণ অন্য কোনও নোড থেকে পাথ অন্য কোনও ক্ষেত্রে প্রথম নোড থেকে পাথ হিসাবে উপস্থিত হবে।
যদি মিশ্র-প্রান্তের পাথগুলি ত্রুটি (শর্ত ৩) না হয়ে কেবল উপেক্ষা করা যায়, তবে নির্ভরশীলতা এবং বিরোধের গ্রাফগুলি স্বতন্ত্রভাবে বিবেচনা করা যথেষ্ট এবং এটি পরীক্ষা করুন যে কোনও নোড যদি একটিতে পৌঁছতে পারে তবে এটি অন্যটিতে নয়।
যদি আপনি এন -1 নোডের গ্রাফ পরীক্ষা করে খুঁজে পাওয়া পাথগুলি মনে করেন তবে আপনি এগুলি এন নোডের গ্রাফ উত্পাদন এবং মূল্যায়নের জন্য প্রাথমিক পয়েন্ট হিসাবে ব্যবহার করতে পারেন।
এটি নোডগুলির মধ্যে একই ধরণের একাধিক প্রান্ত তৈরি করে না তবে এটি করার জন্য এটি বাড়ানো যেতে পারে। এটি তবে মামলার সংখ্যাকে অনেক বাড়িয়ে দেবে, সুতরাং পরীক্ষার কোডটি যদি প্রতিনিধিত্ব করতে অসম্ভব করে তোলে বা এটি ব্যর্থ করে, এই জাতীয় সমস্ত ঘটনা আগেই ফিল্টার করে দেওয়া ভাল।
এর মতো ওরাকল লেখার মূল চাবিকাঠিটি এটি যথাসম্ভব সহজ রাখা, এমনকি এর অর্থ অকার্যকর হওয়া সত্ত্বেও যাতে আপনি এটিতে বিশ্বাস স্থাপন করতে পারেন (আদর্শভাবে এটির সঠিকতার পক্ষে যুক্তি দিয়ে, পরীক্ষার মাধ্যমে ব্যাক আপযুক্ত))
একবার আপনার কাছে পরীক্ষার কেস উত্পন্ন করার উপায় তৈরি হয়ে গেলে এবং আপনি মন্দটিকে ভাল থেকে আলাদা করার জন্য তৈরি করা ওরাকেলের উপর নির্ভর করেন, আপনি লক্ষ্য কোডটির স্বয়ংক্রিয় পরীক্ষার জন্য এটি ব্যবহার করতে পারেন। যদি এটি সম্ভব না হয় তবে আপনার পরবর্তী সেরা বিকল্পটি স্বতন্ত্র ক্ষেত্রে ফলাফলের মাধ্যমে ঝুঁটি দেওয়া। ওরাকল এটি খুঁজে পাওয়া ত্রুটিগুলি শ্রেণিবদ্ধ করতে পারে এবং স্বীকৃত কেসগুলি সম্পর্কে যেমন আপনাকে প্রতিটি ধরণের পাথের সংখ্যা এবং দৈর্ঘ্য এবং উভয় ধরণের পথের শুরুতে কোনও নোড রয়েছে কিনা তা সম্পর্কে কিছু তথ্য দিতে পারে এবং এটি আপনাকে আগে কখনও দেখা হয়নি এমন ক্ষেত্রে সন্ধান করতে সহায়তা করতে পারে।