মূলত আপনি কীভাবে খুঁজে পাবেন যেগুলি আপনার সবচেয়ে খারাপ বা সেরা কেস হতে পারে এবং অন্য কোনও "প্রান্ত" কেসগুলি হওয়ার আগে আপনার থাকতে পারে এবং তাই, আপনি কীভাবে তাদের কোড প্রস্তুত করবেন?
মূলত আপনি কীভাবে খুঁজে পাবেন যেগুলি আপনার সবচেয়ে খারাপ বা সেরা কেস হতে পারে এবং অন্য কোনও "প্রান্ত" কেসগুলি হওয়ার আগে আপনার থাকতে পারে এবং তাই, আপনি কীভাবে তাদের কোড প্রস্তুত করবেন?
উত্তর:
অ্যালগরিদমের সামগ্রীর উপর ভিত্তি করে আপনি সনাক্ত করতে পারবেন কোন ডেটা স্ট্রাকচার / প্রকার / কনস্ট্রাক্ট ব্যবহার করা হয়। তারপরে, আপনি সেগুলির (সম্ভাব্য) দুর্বল পয়েন্টগুলি বোঝার চেষ্টা করেন এবং একটি কার্যকর কার্যকর পরিকল্পনা নিয়ে আসার চেষ্টা করেন যা এই ক্ষেত্রে এটি চালিত করে।
উদাহরণস্বরূপ, অ্যালগরিদম একটি স্ট্রিং এবং একটি পূর্ণসংখ্যাকে ইনপুট হিসাবে গ্রহণ করে এবং স্ট্রিংয়ের অক্ষরগুলির কিছু বাছাই করে।
আমাদের এখানে আছে:
কিছু পরিচিত বিশেষ কেস নিয়ে স্ট্রিং :
পরিচিত বিশেষ ক্ষেত্রে সহ পূর্ণসংখ্যা :
অ্যালগরিদম বাছাই করুন যা নিম্নলিখিত সীমানা ক্ষেত্রে ব্যর্থ হতে পারে:
তারপরে, এই সমস্ত কেস নিন এবং সেগুলি কীভাবে ওভারল্যাপ হয় তা বোঝার চেষ্টা করে একটি দীর্ঘ তালিকা তৈরি করুন। উদা:
এখন তাদের জন্য পরীক্ষার কেস তৈরি করুন :)
সংক্ষিপ্ত সংক্ষিপ্তসার : আপনি যে সীমাবদ্ধ কেসগুলি জানেন সেই মৌলিক ব্লকগুলিতে অ্যালগরিদম ভাঙ্গুন এবং তারপরে পুনরায় সংযুক্ত করুন, বৈশ্বিক সীমানা কেস তৈরি করুন
আমি মনে করি না প্রান্ত শর্ত নির্ধারণ করার জন্য কোনও অ্যালগরিদম আছে .... কেবল অভিজ্ঞতা।
উদাহরণ: বাইট প্যারামিটারের জন্য আপনি 0, 127, 128, 255, 256, -1 এর মতো সংখ্যার পরীক্ষা করতে চান, যে কোনও সমস্যার কারণ হতে পারে।
একটি "প্রান্ত" এর দুটি অর্থ রয়েছে এবং এটি যখন প্রান্তের ক্ষেত্রে আসে তখন উভয়ই প্রাসঙ্গিক। একটি প্রান্ত হয় এমন একটি ক্ষেত্র যেখানে ইনপুটটির একটি ছোট পরিবর্তন আউটপুটে একটি বড় পরিবর্তন বা সীমার শেষের দিকে নিয়ে যায়।
সুতরাং, একটি অ্যালগরিদমের প্রান্তের কেসগুলি সনাক্ত করতে, আমি প্রথমে ইনপুট ডোমেনটি দেখি। এর প্রান্ত মানগুলি অ্যালগরিদমের প্রান্তের ক্ষেত্রে ডেকে আনতে পারে।
দ্বিতীয়ত, আমি আউটপুট ডোমেনটি দেখি এবং তাদের তৈরি হতে পারে এমন ইনপুট মানগুলিতে ফিরে তাকাই। এটি সাধারণত অ্যালগোরিদমগুলির সাথে সমস্যা কম তবে এটি প্রদত্ত আউটপুট ডোমেনকে ছড়িয়ে থাকা আউটপুট তৈরির জন্য ডিজাইন করা অ্যালগরিদমগুলিতে সমস্যা খুঁজে পেতে সহায়তা করে। উদাহরণস্বরূপ একটি এলোমেলো সংখ্যা জেনারেটর সমস্ত উদ্দেশ্যে আউটপুট মান উত্পন্ন করতে সক্ষম হওয়া উচিত।
অবশেষে, আমি আলগোরিদিম পরীক্ষা করে দেখি যে এখানে কোনও অনুরূপ ইনপুট কেস রয়েছে, তবুও ভিন্ন ভিন্ন ফলাফলের দিকে নিয়ে যায়। এই প্রান্তের কেসগুলি সন্ধান করা সবচেয়ে কঠিন, কারণ এতে ডোমেন এবং একজোড়া ইনপুট উভয়ই জড়িত।
এটি খুব সাধারণ প্রশ্ন তাই আমি যা করতে পারি তা হ'ল কিছু সাধারণ, অস্পষ্ট ধারণা ফেলে দেওয়া :)
- এক্সামাইন সীমানা ক্ষেত্রে। যাত্রা। আপনি যদি একটি স্ট্রিং পার্সিং করছেন তবে স্ট্রিংটি খালি বা নাল থাকলে কী হবে? আপনি যদি x থেকে y গণনা করেন তবে x এবং y এ কী হবে?
-কোড যা সরলীকরণ বা DRY- সম্পাদিত হতে পারে। যে কোনও অনিবদ্ধ জটিলতা ভুল হতে পারে এমন জিনিসগুলিতে যুক্ত করতে পারে।
অ্যালগরিদমগুলি ব্যবহার করার দক্ষতার অংশটি তাদের দুর্বলতা এবং প্যাথলজিকাল কেসগুলি জেনে। ভিক্টরের উত্তর কিছু ভাল টিপস দেয়, তবে সাধারণভাবে আমি পরামর্শ দেব যে এর জন্য অনুভূতি পেতে আপনাকে আরও গভীরতার সাথে বিষয়টি অধ্যয়ন করতে হবে, আমি মনে করি না যে আপনি এই প্রশ্নের পুরো উত্তর দেওয়ার জন্য থাম্বের বিধিগুলি অনুসরণ করতে পারেন। উদাহরণস্বরূপ Cormen , বা Skiena দেখুন (বিশেষত স্কিয়েনার একটি খুব ভাল বিভাগ রয়েছে যেখানে অ্যালগরিদমগুলি ব্যবহার করতে হবে এবং কিছু ক্ষেত্রে কী ভাল কাজ করে, Cormen আমার মনে হয় আরও তত্ত্বে যায়)।