একাধিক বা সঠিক সঠিক উত্তর প্রমাণ করতে অসুবিধা সহ পরীক্ষার (ডিটারমিনিস্টিক) অ্যালগোরিদম


11

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

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

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

তবে এটি এই বৈশিষ্ট্যযুক্ত সব অ্যালগরিদমের পক্ষে সর্বদা কার্যকর হতে পারে না। এখনও অবধি, আমি যে সেরা উত্তরটি নিয়ে এসেছি তা হ'ল সঠিক উত্তরের চেয়ে একটি সঠিক উত্তরের বৈশিষ্ট্য পরীক্ষা করা। সংক্ষিপ্ততম পথ অ্যালগরিদমগুলিতে ফিরে যেতে, আপনি জ্ঞাত সঠিক ব্যয়ের বিপরীতে ফিরে আসা পথের মূল্য পরীক্ষা করতে পারেন এবং নিশ্চিত করতে পারেন যে পথটি বৈধ কিনা।

এটি কাজ করে, তবে এটি যথাযথতার জন্য আরও মাপদণ্ডের সবকিছু যথাযথভাবে যাচাই না করার ঝুঁকি চালাতে পারে, বিশেষত যাচাইকরণটি নিজেই জটিল (যেমন সঠিক অ্যালগরিদমের উপস্থিতি থাকলে , একটি ন্যূনতম বিস্তৃত গাছ যাচাই করা একটি পরিচিত সমস্যা; সম্ভবত এটির চেয়ে শক্ত) এমএসটি নিজেই তৈরি করা), এক্ষেত্রে আপনাকে এখন আপনার টেস্টিং কোডটি ব্যাপকভাবে পরীক্ষা করতে হবে। আরও খারাপ: সম্ভবতঃ আপনাকে একটি এমএসটি যাচাইকরণ অ্যালগরিদম পরীক্ষা করার জন্য একটি এমএসটি নির্মাণ করতে হবে যাতে আপনার এখন দুর্দান্ত পরিস্থিতি রয়েছে যেখানে আপনার এমএসটি পরীক্ষাটি আপনার এমএসটি যাচাইকরণের অ্যালগরিদমকে কাজ করে এবং আপনার এমএসটি যাচাইকরণ অ্যালগরিদম পরীক্ষাটি আপনার এমএসটি জেনারেশন কোডের কাজের উপর নির্ভর করে।

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

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


3
যদি ভাষা এটির অনুমতি দেয় তবে আপনি এটির পরীক্ষা করার পরিবর্তে সঠিকতা প্রমাণ করতে পারবেন
miniBill

প্রচুর পাঠ্য রয়েছে, তবে কোনও প্রশ্ন নেই। তো, আপনি ঠিক কী জিজ্ঞাসা করছেন?
BЈовић

@ বিЈовић "একাধিক এবং / অথবা সঠিক আউটপুট যাচাই করা কঠিন সহ আমি কীভাবে অ্যালগরিদমের বাস্তবায়ন পরীক্ষা করব?" আমি কীভাবে এত বেশি পরিষ্কার করব তা নিশ্চিত নই, দুঃখিত। আমি মঞ্জুরি দেব যে এটি আপনার দৃষ্টিকোণের উপর নির্ভর করে কিছুটা বিস্তৃত হিসাবে বিবেচনা করা যেতে পারে, তবে আমি মনে করি না এটি অপরিবর্তিত।
লিনিয়ারজয়েট্রোপ

আমি এখনও বুঝতে পারি না। আপনার অ্যালগরিদম এলোমেলো উপর নির্ভর করে না, এবং এখনও এটি বিভিন্ন আউটপুট উত্পাদন করতে পারে। এটি মোটেই বোঝা যায় না। প্রতিটি অ্যালগরিদম, সেট ইনপুটগুলির জন্য অবশ্যই একই আউটপুট থাকতে হবে। এবং ইউনিট পরীক্ষায় এটি করা হয় এবং পরীক্ষিত হয়। এমনকি আপনি যে কাগজে লিঙ্ক করেছেন তাতে আলগোরিদিম।
BЈовић

@ বিЈовић অবশ্যই এটি নির্বিচারক, তবে এটির প্রতি খুব সংবেদনশীলও রয়েছে, যেমন গ্রাফটি নোডের উত্তরসূরিদের অর্ডার দেয়। এটি একটি প্রজাপতি প্রভাব একটি বিট কারণ হতে পারে। আপনি যদি ভার্টেক্স বি এর আগে একটি স্ট্যাকের উপরে ভার্টেক্স A টিপান কিনা তা যদি উভয়ই একটি সংক্ষিপ্ত পথে পরিচালিত করে তবে একটি আলাদা আউটপুট নিয়ে যাবে। অ-স্থিতিশীল প্রকারের বা মিনি-হ্যাপের মতো লাইব্রেরি ফাংশন ব্যবহার করা সমস্যাটিকে কেবল বাড়িয়ে তোলে।
লিনিয়ারজয়েট্রোপ

উত্তর:


5

আমি নিশ্চিত নই আপনি সঠিক সম্পত্তি পরীক্ষা করার চেষ্টা করছেন এবং এটি আপনার দ্বিবিশ্বাসের কারণ।

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

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

উদাহরণস্বরূপ, একটি নিষ্পাপ পরীক্ষা সেটআপটি হ'ল:

  1. লোভী অ্যালগরিদমের সাহায্যে পরীক্ষার গ্রাফে ভ এবং ভিবি এর মধ্যে সমস্ত সম্ভাব্য পাথগুলি গণনা করুন।
  2. এই প্রতিটি পাথের জন্য ব্যয় ফাংশনটি গণনা করুন (উদাহরণস্বরূপ, আপনার সমস্ত প্রান্তের ওজন 1 সমান হলে দৈর্ঘ্য) এবং সর্বনিম্ন মান সন্ধান করুন।
  3. পরীক্ষার অধীনে অ্যালগরিদম প্রয়োগ করুন।
  4. আপনার ইউনিট পরীক্ষায় একটি দৃ Make়তা জানান যে পরীক্ষিত অ্যালগরিদম ব্যয়ের মান লোভী সমাধানগুলির সর্বনিম্নের সমান।

আপনি যদি গ্রাফ ভিত্তিক অপ্টিমাইজেশান সম্পর্কে আরও জানতে চান তবে আপনি এখানে ইউরি বয়কভের প্রকাশনাগুলি একবার দেখতে পারেন , যদিও অন্য প্রসঙ্গে (কম্পিউটার ভিশনের সমস্যা)।


আমি upvated, কিন্তু আমি গ্রহণ করতে কিছুটা অপেক্ষা করব। আমি প্রশ্নটিতে উল্লেখ করেছি এটি "সঠিক উত্তরের বৈশিষ্ট্যগুলির পরীক্ষা"। আপনি সঠিক জিনিসটি যাচাই করছেন তা নিশ্চিত করার ক্ষেত্রে সমস্যাটি সর্বদা আসে। উদাহরণস্বরূপ, একবারে আমি ফিরে আসা খরচটি যাচাই করেছিলাম এবং নিশ্চিত হয়েছি যে পথটি বৈধ কিনা। অবশ্যই পথটি বৈধ ছিল! এটি কেবল শুরু নোড ছিল! সুতরাং পথটি নিজেই ফিরে এসেছিল, সঠিক ব্যয় হয়েছে তা নিশ্চিত করার জন্য আমাকে পরীক্ষাগুলি পরিবর্তন করতে হয়েছিল। নির্বোধ ভুল, অবশ্যই, তবে আপনার আউটপুটটির মতো এরকম ইন্টারঅ্যাকশন যত বেশি হবে তত বেশি সম্ভাবনা রয়েছে।
লিনিয়ারজয়েট্রোপ

@ জিসর আমার দৃষ্টিতে এটি পরীক্ষার ক্রমাগত উন্নতি সুবিধা: আপনি প্রথমে সমাধানের সমস্ত নির্ভুল বৈশিষ্ট্যগুলি খুঁজে বের করতে পারবেন না, তারপরে একদিন কিছুটা ব্যর্থতার মধ্যে চলে যান, আপনার পরীক্ষা আরও উন্নত করুন।
সানসাইসো

এই উত্তরটি সঠিক উত্তরের বৈশিষ্ট্যগুলির জন্য পরীক্ষার পরামর্শ দেয় তবে গুরুত্বপূর্ণ বৈশিষ্ট্যটি কোন বৈশিষ্ট্যগুলি একটি ভাল পরীক্ষা করে তা চয়ন করা। এই উদাহরণে, উত্তরটি A থেকে B পর্যন্ত একটি পথ এবং ব্যয় ফাংশন ন্যূনতম মানের সমান হওয়ার বিষয়টি যাচাই করা আপনাকে দুটি মানদণ্ড দেয় যা সমস্ত সঠিক উত্তর পূরণ করবে, এবং কোনও ভুল উত্তর উভয় মাপদণ্ড পূরণ করবে না। যদি এই উত্তরটি ইতিমধ্যে না দেওয়া হয়, তবে আমি অনুরূপ কিছু সুপারিশ করতাম। স্বভাবতই কোন বৈশিষ্ট্য পরীক্ষা করতে হয় তা প্রায়শই জানা সহজ নয়।
ডেভিড কে

0

আমি মনে করি আপনার প্রশ্নের সরাসরি উত্তর হ'ল আরও ভাল পরীক্ষার কেসগুলি বেছে নেওয়া। আপনি যে পরীক্ষাগুলি ব্যবহার করছেন সেগুলি সম্পর্কে আমি অবাক হয়েছি। আপনার ব্যবহৃত গ্রাফগুলি গ্রাফগুলি ক্যানড করা যেতে পারে যেখানে প্রত্যাশিত প্রতিক্রিয়া নির্ধারণ করা মানুষের পক্ষে তুলনামূলকভাবে সহজ। "এজ" কেসগুলি সনাক্ত করার চেষ্টা করুন যা আপনি নিশ্চিত হতে চান যে আপনার অ্যালগোরিদম হ্যান্ডেল করেছে এবং নির্দিষ্ট প্রান্তের প্রতিটি ক্ষেত্রে একটি ক্যান গ্রাফ তৈরি করতে পারে যা মানুষের পক্ষে গণনা করা সহজ। উদাহরণস্বরূপ, জিক্সট্রা অ্যালগরিদম ক্ষেত্রে, আপনি সম্ভবত কিছু 5x5 বা 7x7 গ্রাফ তৈরি করতে পারেন যা আপনার সমস্ত প্রান্তের কেসগুলি কভার করে, যদিও আপনার আসল সিস্টেমটি 500x500 হতে পারে।

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

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