এন আইটেমগুলি পরীক্ষা করার সময়, কীভাবে সম্ভব সমস্ত টি-সাবলেটগুলি সম্ভব কম কয়েকটি এস-উপসেট দ্বারা কভার করবেন?


10

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

পরীক্ষার জন্য 10 টি আইটেম রয়েছে, এ টু জে এবং একটি পরীক্ষামূলক সরঞ্জাম যা একই সময়ে 3 টি আইটেম পরীক্ষা করতে পারে। পরীক্ষার সরঞ্জামে আইটেমগুলির অর্ডার কোনও বিষয় নয়। অবশ্যই, পরীক্ষার জন্য, আমাদের আইটেমগুলির সংমিশ্রণগুলি দরকার।10C3

সমস্যা আরও জটিল। একটি অতিরিক্ত শর্ত রয়েছে যে একবার একই জুড়ির একসাথে পরীক্ষা করা হয়েছিল, একই জোড়ায় আবার পরীক্ষা করার দরকার নেই।

উদাহরণস্বরূপ, একবার আমরা নিম্নলিখিত তিনটি পরীক্ষা কার্যকর করেছি:

অ আ ক খ

ADE

BDF

আমাদের কার্যকর করতে হবে না:

ABD

কারণ A, B- এর জুটি প্রথম পরীক্ষার কেস দ্বারা আবৃত ছিল, A, D দ্বিতীয় দ্বারা আবৃত হয়েছিল, এবং B, D তৃতীয় দ্বারা আবৃত হয়েছিল।

সুতরাং সমস্যাটি হল, সমস্ত জোড় পরীক্ষা করা উচিত তা নিশ্চিত করার জন্য আমাদের ন্যূনতম পরীক্ষার কেসের সংখ্যা কত?

সাধারণকরণের জন্য, যদি আমাদের কাছে আইটেম থাকে তবে একই সময়ে পরীক্ষা করা যেতে পারে এবং আমাদের এটি নিশ্চিত করা দরকার যে সমস্ত সম্ভাব্য টিউপল পরীক্ষা করা হয়েছে (যেমন যে গুলি> টি), আমাদের পরীক্ষার ক্ষেত্রে ন্যূনতম সংখ্যা কত? এন, এস এবং টি এর শর্তাবলী?

এবং পরিশেষে, প্রয়োজনীয় পরীক্ষার কেস উত্পন্ন করার জন্য একটি ভাল অ্যালগরিদম কী হবে?


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

আপনার পরীক্ষার দৃষ্টান্তটি ত্রুটিযুক্ত; এটি কেবল জোড়া পরীক্ষা করার জন্য পর্যাপ্ত নাও হতে পারে। কিছু ত্রুটি কেবল তখনই ঘটতে পারে যদি তিনটি (বা আরও) উপাদানগুলি একটি নির্দিষ্ট সংমিশ্রণে এক সাথে কাজ করে।
রাফেল

4
@ রাফেল, আরও অনেক ভাল শিরোনামের জন্য ধন্যবাদ, তবে আসল সমস্যা বা প্রসঙ্গে শূন্য বোঝার সাথে আপনি কীভাবে "আপনার পরীক্ষার দৃষ্টান্তটি ত্রুটিযুক্ত" দাবি করতে পারেন তা আমি সম্পূর্ণরূপে বুঝতে ব্যর্থ হয়েছি।
wookie919

এর কারণ আপনার না @ wookie919 যে দিতে কোনো প্রসঙ্গ কিন্তু একটি জাহির সাধারণ সমস্যা। আমি কেবল পর্যবেক্ষণ করেছি যে, সাধারণভাবে, আপনাকে ঘটতে পারে এমন সমস্ত সংমিশ্রণগুলি পরীক্ষা করার প্রয়োজন হতে পারে (ক্রিয়াতে)।
রাফেল

উত্তর:


11

আপনি যে ব্লক ডিজাইনগুলি চান তা (একসাথে 3 টি জিনিস পরীক্ষা করার জন্য এবং সমস্ত জোড় কভার করার জন্য) স্টেইনার ট্রিপল সিস্টেম বলে । Ste with এর সাথে একটি স্টেইনার ট্রিপল সিস্টেম বিদ্যমান রয়েছে যখনই ট্রিপল চয়ন করুন যখনই মড , এবং অ্যালগরিদমগুলি এগুলি তৈরির জন্য পরিচিত। উদাহরণস্বরূপ, এই ম্যাথওভারফ্লো প্রশ্নটি (সেজ কোডের সাথে লিঙ্ক সহ!) দেখুন। অপরের জন্য , আপনি পরবর্তী যে মানটিকে পারে গেলিক ভাষার , এবং এই ট্রিপল সিস্টেমের একটি পরিবর্তন ব্যবহার জন্য সব জোড়া আবরণ । n1or36nn1or36nn13(n2)n1 or 36nn1 or 36nn

আপনি যদি অন্য জন্য সেরা নির্মাণ চান তবে প্রয়োজনীয় ট্রিপলের সংখ্যাটি কভারিং নম্বর , এবং ক্রমগুলির অন-লাইন এনসাইক্লোপিডিয়ায় এই এন্ট্রি দ্বারা দেওয়া হয় । লা জোলা কভারিং রেপোজিটরির সাথে এই লিঙ্কগুলি রয়েছে যার ভাল আচ্ছাদনগুলির একটি সংগ্রহস্থল রয়েছে। পূর্ণসংখ্যার সিকোয়েন্সগুলির অনলাইন এনসাইক্লোপিডিয়া জন্য একটি অনুমান সূত্র দেয় ; যদি এই সূত্রটি ধারণ করে, স্বজ্ঞাতভাবে এর অর্থ হ'ল সম্ভবত এই কভারিংগুলি তৈরি করার ভাল অ্যালগরিদমিক উপায় থাকতে হবে, তবে যেহেতু সূত্রটি অনুমান করা হয়েছে, এটি স্পষ্ট যে বর্তমানে কেউ এগুলি জানে না।সি ( এন , 3 , 2 ) সি ( এন , 3 , 2 )n C(n,3,2)C(n,3,2)

উচ্চ আচ্ছাদন সংখ্যার জন্য, চেয়ে ভাল আচ্ছাদনগুলি সন্ধান করা আরও শক্তিশালী , এবং কোনও সংগ্রহস্থল অ্যালগরিদমের তুলনায় আরও ভাল সমাধান দেবে।C(n,3,2)


5

নিখরচায়িত গ্রাফ যেখানে প্রতিটি শীর্ষবিন্দু একটি আইটেমের জুড়ি এবং যেখানে তারা দুটি আইটেম একসাথে ভাগ করে নিলে সেখানে দুটি শীর্ষে অবস্থিত। অন্য কথায়, যেখানে এবং । গ্রাফটিতে শীর্ষটি এবং প্রতিটি প্রান্তে এটিতে প্রান্তের ঘটনা রয়েছে।জি = ( ভি , ) ভি = { { , বি } : , বি te আইটেম বি } = { ( গুলি , টি ) : এস , টি ভি | s t | = 1 } ( এনGG=(V,E)V={{a,b}:a,bItemsab}E={(s,t):s,tV|st|=1} 2এন-4(n2)2n4

তারপরে একটি পদ্ধতি হ'ল সর্বাধিক মিল । বহুতল সময়ে এ জাতীয় সর্বোচ্চ মিল খুঁজে পেতে এডমন্ডসের অ্যালগরিদম ব্যবহার করা যেতে পারে। আপনি যদি ভাগ্যবান হন তবে এটি আপনাকে একটি নিখুঁত মিল দিবে এবং তারপরে আপনি ভাল। মিলের তে প্রতিটি প্রান্ত একটি পরীক্ষার কেস । যেহেতু প্রতিটি ভার্টেক্সটি নির্ভুল মিলের ক্ষেত্রে একটি প্রান্তের সাথে সম্পর্কিত, তাই আপনি সমস্ত জোড় coveredাকা দিয়ে test ব্যবহার করে পরীক্ষার কেস , যা সর্বোত্তমের ডিগ্রির মধ্যে রয়েছে। যদি আপনি একটি নিখুঁত ম্যাচিং না পান তবে পূর্ণ কভারেজ অর্জনের জন্য আরও কয়েকটি পরীক্ষার কেস যুক্ত করুন।( { , বি } , { বি , সি } ) বি সি ( এন)G({A,B},{B,C})EABC1.5(n2)/21.5


4

ক্ষেত্রে এবং অন্তত সঞ্চালন প্রয়োজন , পরীক্ষা যেহেতু আছে জোড়া এবং প্রতি পরীক্ষা কভার 3 জোড়া। এর অর্থ হল যে আপনি তুচ্ছ জিনিসটি করতে পারেন এবং পরীক্ষা করতে পারেন, এবং সর্বোত্তমের চেয়ে 3 টির চেয়ে বেশি খারাপ।টি = 2 ( এনs=3t=2 ( এন )(n2)/3( এন(n2)(n2)

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


সাধারণ এবং , lower টেস্টগুলি of উপরের সীমানার জন্য আমি দাবি করছি যে পরীক্ষা।t ( n)st সি ( এন )(nt)/(st)C(nt)(st)log((nt))O(t(ntst)tlog(n))

আসুন দেখুন কি হয় আমরা এলোমেলোভাবে পরীক্ষাগুলি নির্বাচন করি I আপনি যদি এলোমেলোভাবে একটি -tuple subteq করেন, তবে একটি নির্দিষ্ট টিপল , আমাদের। অতএব, আমরা যদি pick বেছে বেছে বেছে পরীক্ষাগুলি এলোমেলোভাবে, তবেএস [ এন ] টি এক্স [ এন ] Pr [sS[n]tX[n]Pr[XS]=(ntst)(ns)[এক্স এরকোনওটির সাথে সম্পর্কিত নয়]=C(nt)log((nt))

Pr[X does not belong to any of them]=(1(ntst)(ns))C(nt)log((nt))exp(C(ntst)(nt)(ns)(st)log((nt)))=exp(Clog(nt))1/(nt).

সুতরাং, ইউনিয়নের সাথে আবদ্ধ, এলোমেলো পরীক্ষার পরে সমস্ত -tuples কভার করা হবে।টিO(t(ntst)tlog(n))t


খুব অন্তর্দৃষ্টিযুক্ত উত্তরের জন্য আপনাকে অনেক ধন্যবাদ, তবে আমি একটি সঠিক অ্যালগরিদম সন্ধান করছিলাম যা সঠিকভাবে পরীক্ষার কেস সংখ্যা (যদি তা সম্ভবও হয়) বা খুব কাছের কিছু তৈরি করতে পারে নিম্ন সীমা (nt)/s
wookie919
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.