N आइटम का परीक्षण करते समय, संभव के रूप में कुछ एस-सबसेट द्वारा सभी टी-सबसेट को कैसे कवर किया जाए?


10

सॉफ्टवेयर परीक्षण से यह समस्या उत्पन्न हुई। समस्या को समझाना थोड़ा मुश्किल है। मैं पहले एक उदाहरण दूंगा, फिर समस्या को सामान्य करने का प्रयास करूंगा।

A से J तक 10 वस्तुओं का परीक्षण किया जाना है, और एक परीक्षण उपकरण है जो एक ही समय में 3 वस्तुओं का परीक्षण कर सकता है। परीक्षण उपकरण में वस्तुओं का क्रम मायने नहीं रखता है। बेशक, संपूर्ण परीक्षण के लिए, हमें 10 सी 3 आइटमों के संयोजन की आवश्यकता है ।10C3

समस्या अधिक जटिल है। एक अतिरिक्त स्थिति यह है कि एक बार एक जोड़ी वस्तुओं का एक साथ परीक्षण किया गया है, उसी जोड़ी की तुलना में फिर से परीक्षण करने की आवश्यकता नहीं है।

उदाहरण के लिए, एक बार हमने निम्नलिखित तीन परीक्षणों को अंजाम दिया:

एबीसी

एडीई

BDF

हमें निष्पादित नहीं करना है:

एबीडी

क्योंकि जोड़ी A, B को पहले परीक्षण मामले द्वारा कवर किया गया था, A, D को दूसरे द्वारा कवर किया गया था, और B, D को तीसरे द्वारा कवर किया गया था।

तो समस्या यह है कि परीक्षण के मामलों की न्यूनतम संख्या क्या है जो हमें यह सुनिश्चित करने की आवश्यकता है कि सभी जोड़ों का परीक्षण किया जाए?

सामान्यीकृत करने के लिए, यदि हमारे पास n आइटम हैं, तो एक ही समय में परीक्षण किया जा सकता है, और हमें यह सुनिश्चित करने की आवश्यकता है कि सभी संभावित टी ट्यूपल्स का परीक्षण किया जाता है (जैसे कि s> t), हमें उन मामलों की न्यूनतम संख्या क्या है जो हमें चाहिए n, s और t की शर्तें?

और अंत में, आवश्यक परीक्षण मामलों को उत्पन्न करने के लिए एक अच्छा एल्गोरिथ्म क्या होगा?


1
मामले थे परीक्षण "इष्टतम" है (प्रत्येक टपल का परीक्षण एक बार ठीक से किया जाता है) ब्लॉक डिजाइन की धारणा द्वारा कवर किया गया है । मुझे लगता है कि इन अतिरिक्त परीक्षण संभावनाओं की अपेक्षाकृत कम संभावनाएं हैं, इसलिए मुझे अतिरिक्त अनुमान लगाने की जरूरत है। t
हेंड्रिक जनवरी

आपका परीक्षण प्रतिमान दोषपूर्ण है; यह केवल जोड़े का परीक्षण करने के लिए पर्याप्त नहीं हो सकता है। कुछ त्रुटियां केवल तभी हो सकती हैं जब तीन (या अधिक) घटक एक विशिष्ट संयोजन में एक साथ कार्य करते हैं।
राफेल

4
@ राफेल, एक बेहतर शीर्षक के लिए धन्यवाद, लेकिन मैं यह समझने में पूरी तरह से विफल हूं कि आप वास्तविक समस्या या संदर्भ की शून्य समझ होने के साथ "आपका परीक्षण प्रतिमान दोषपूर्ण कैसे हो सकता है"।
wookie919

@ wookie919 ऐसा इसलिए है क्योंकि आप कोई संदर्भ नहीं देते हैं लेकिन एक सामान्य समस्या है। मैंने केवल यह देखा है कि, सामान्य तौर पर, आपको उन सभी संयोजनों का परीक्षण करने की आवश्यकता हो सकती है जो (क्रिया में) हो सकती हैं।
राफेल

जवाबों:


11

आप जो ब्लॉक डिजाइन चाहते हैं (एक समय में 3 चीजों के परीक्षण के लिए, और सभी जोड़े को कवर करते हैं) को स्टीनर ट्रिपल सिस्टम कहा जाता है । जब भी mod , और एल्गोरिदम को इनका निर्माण करने के लिए जाना जाता है, तब तीनों के साथ Steiner ट्रिपल सिस्टम मौजूद होता है । उदाहरण के लिए, यह MathOverflow प्रश्न (काम करने वाले ऋषि कोड के लिंक के साथ!)। अन्य के लिए , तो आप अगले में इसे राउंड सकता है आधुनिक , और के लिए इस ट्रिपल प्रणाली के एक संशोधन का उपयोग के लिए सभी जोड़ों को कवर करने के लिए ।13(n2)n1 or 36nn1 or 36nn

यदि आप अन्य लिए सबसे अच्छा निर्माण चाहते हैं , तो आवश्यक त्रिकोणीय संख्या कवरिंग , और पूर्णांक अनुक्रमों के ऑन-लाइन विश्वकोश में इस प्रविष्टि द्वारा दिया गया है । यह ला जोला कवरिंग रिपॉजिटरी से जुड़ता है जिसमें अच्छे कवरिंग का भंडार है। पूर्णांक अनुक्रमों के ऑनलाइन विश्वकोश लिए एक अनुमानित सूत्र देता है ; यदि यह सूत्र, सहज ज्ञान युक्त है, जिसका अर्थ है कि इन आवरणों के निर्माण के अच्छे एल्गोरिथम तरीके होने चाहिए, लेकिन चूंकि सूत्र का अनुमान लगाया गया है, यह स्पष्ट है कि वर्तमान में कोई भी उन्हें नहीं जानता है।n C(n,3,2)C(n,3,2)

उच्च कवरिंग संख्याओं के लिए, तुलना में अच्छे कवरिंग कठिन हैं , और रिपॉजिटरी किसी भी ज्ञात कुशल एल्गोरिदम की तुलना में बेहतर समाधान देगा।C(n,3,2)


5

अप्रत्यक्ष ग्राफ़ जहाँ प्रत्येक शीर्ष वस्तु की एक जोड़ी है, और जहाँ वे एक वस्तु को आम तौर पर साझा करते हैं, तो दो कोने के बीच एक धार होती है। दूसरे शब्दों में, जहां और । ग्राफ में कोने हैं, और प्रत्येक शीर्ष पर किनारों की घटना है।GG=(V,E)V={{a,b}:a,bItemsab}E={(s,t):s,tV|st|=1}(n2)2n4

फिर एक दृष्टिकोण में अधिकतम मिलान खोजने के लिए होगा । एडमंड्स के एल्गोरिथ्म का उपयोग बहुपद समय में इस तरह के अधिकतम मिलान को खोजने के लिए किया जा सकता है। यदि आप भाग्यशाली हैं, तो यह आपको एक आदर्श मिलान देगा, और फिर आप अच्छे होंगे। मिलान प्रत्येक किनारे _ एक परीक्षण केस से मेल खाते हैं । चूंकि प्रत्येक शीर्ष सही मिलान में एक किनारे के साथ घटना है, आपने परीक्षण मामलों का उपयोग करके सभी जोड़े को कवर किया है , जो कि इष्टतम के कारक के भीतर है । यदि आपको पूर्ण मिलान नहीं मिलता है, तो पूर्ण कवरेज प्राप्त करने के लिए कुछ और परीक्षण मामलों को जोड़ दें।G({A,B},{B,C})EABC(n2)/21.5


4

और के मामले में आपको कम से कम परीक्षण करने की आवश्यकता है, क्योंकि जोड़े हैं और प्रत्येक परीक्षण में 3 जोड़े शामिल हैं। इसका मतलब यह है कि आप तुच्छ काम कर सकते हैं और परीक्षण कर सकते हैं, और केवल 3 से अधिक का कारक हो सकता है।s=3t=2(n2)/3(n2)(n2)

यदि आप वास्तव में यह प्रोग्रामिंग कर रहे हैं, तो इसे ऑप्टिमाइज़ करने का एक तरीका पहले कुछ संख्याओं को यादृच्छिक रूप से उठाकर किया जा सकता है, और फिर जोड़े पर ब्रूट बल को परीक्षण द्वारा कवर नहीं किया जा सकता है।


सामान्य और , परीक्षणों का निचला भाग होता है । एक ऊपरी बाध्यता के लिए, मैं दावा कर रहा हूं कि बनाने के लिए पर्याप्त है परीक्षण।st(nt)/(st)C(nt)(st)log((nt))O(t(ntst)tlog(n))

देखते हैं कि क्या होता है हम रैंडम रूप से परीक्षण का चयन करते हैं। यदि आप यादृच्छिक रूप से एक -tuple , तो एक निश्चित -tuple , हमारे पास । इसलिए, यदि हम को यादृच्छिक रूप से परीक्षण करते हैं, तो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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.