У меня проблема с поиском нескольких комбинаций подмножеств во вложенных хэш-наборах.По сути, у меня есть «главный» вложенный HashSet, и из коллекции «возможных» вложенных HashSets я должен программно найти «возможные», которые могут быть одновременными подмножествами «главного».
Допустим, у меня естьследующее:
var master = new HashSet<HashSet<string>>(new HashSet<string>[] {
new HashSet<string>( new string[] { "A", "B", "C"}),
new HashSet<string>( new string[] { "D", "E"}),
new HashSet<string>( new string[] { "F"})
}
);
var possible1 = new HashSet<HashSet<string>>(new HashSet<string>[] {
new HashSet<string>( new string[] { "A", "B", "C"}),
new HashSet<string>( new string[] { "F"})
}
);
var possible2 = new HashSet<HashSet<string>>(new HashSet<string>[] {
new HashSet<string>( new string[] { "D", "E"})
}
);
var possible3 = new HashSet<HashSet<string>>(new HashSet<string>[] {
new HashSet<string>( new string[] { "F"})
}
);
var possible4 = new HashSet<HashSet<string>>(new HashSet<string>[] {
new HashSet<string>( new string[] { "X", "Y", "Z"})
}
);
var possible5 = new HashSet<HashSet<string>>(new HashSet<string>[] {
new HashSet<string>( new string[] { "A", "B" }),
new HashSet<string>( new string[] { "D", "E"})
}
);
Вывод, который я должен получить из моего алгоритма, должен быть следующим:
Все возможные подмножества комбинации:
possible1 and possible2
possible3 and possible5
possible2 and possible3
possible1
possible2
possible3
possible5
Я пытаюсьвыяснить лучший способ подойти к этому.Есть, конечно, вариант грубой силы, но я пытаюсь избежать этого, если смогу.
Я просто надеюсь, что мой вопрос был достаточно ясен.
РЕДАКТИРОВАТЬ
Для дальнейшего уточнения того, что составляет подмножество, вот несколько примеров, учитываяmaster {{"A", "B", "C"}, {"C", "D", "E", F "}, {" X "," Y "," Z "}}:
- {{"A", "B"} {"C", "D"}} будет подмножеством
- {{"A", "B", "C"}, {" X "," Y "}} будет подмножеством
- {{" A "," B "}, {" A "," B "}} НЕ будет подмножеством
- {{"A", "B", "C", "D"}} НЕ будет подмножеством
- {{"A", "B", "C"},{"C", "D", "X"}} НЕ будут подмножеством
По сути, каждый дочерний набор должен быть подмножеством соответствующего дочернего элемента в мастере.