को देखते हुए ए और बी
A={{'a','b'},{'c'},{'d','e'}}
B={{'a','b'},{'c','d'},{'e'}}
हम एक समारोह isSubset
परिभाषित कर सकते हैं, इस प्रकार है:
isSubset = @(superSet,subSet)isempty(setdiff(subSet, superSet));
और यह परीक्षण:
isSubset(B{1}, A{1}) %true
isSubset(B{2}, A{2}) %true
isSubset(B{3}, A{3}) %false
अब हम उपयोग कर सकते हैं isSubSet
और
isSubSetOfAny = @(superSetSet, subSet) any(cellfun(@(x)isSubset(x, subSet), superSetSet));
और यह परीक्षण:
isSubSetOfAny(B, A{1}) %True
isSubSetOfAny(B, A{2}) %True
isSubSetOfAny(B, A{3}) %True
एक समारोह
isSubSetOfAny
है, जो अगर कोई खास सबसेट सेट का एक सेट में से किसी का एक सबसेट है देखते हैं, इस तरह के जांच करता है परिभाषित करने के लिए अब हम
isSubSetOfAny
प्लस
cellfun
(दोबारा)
isEachMemberASubsetOfAny
को परिभाषित करने के लिए उपयोग कर सकते हैं, जो आपके द्वारा वर्णित ऑपरेशन करता है:
isEachMemberASubsetOfAny = @(superSetSet, subSetSet) all(cellfun(@(x)isSubSetOfAny(superSetSet, x), subSetSet));
और यह परीक्षण:
isEachMemberASubsetOfAny(B, A) %Returns false
A_1 = {{'a','b'},{'c'},{'e'}}; %Define a variant of `A`
isEachMemberASubsetOfAny(B, A_1) %Returns false
छोरों तोड़कर जितनी जल्दी हो सके 'cellfun' आधारित दृष्टिकोण पर एक बहुत बड़ी प्रदर्शन में सुधार करने के लिए नेतृत्व करना चाहिए (मेरे अपने सहित)। – Pursuit
जादू की तरह काम करता है धन्यवाद! – Evan