Angenommen, ich habe zwei Sätze, set1 = {a,b,c,d,e,f}
und set2 = {a,b,c,d,e,g}
. Anstatt diese explizit zum Ausdruck, ich so etwas wieSet Vereinfachung
common = {a,b,c,d,e}
set1 = common + f
set2 = common + g
erstellen möchten Wenn wir vertreten {a,b,c,h}
wollten, könnten wir es als common - d - e + h
darstellen.
Mein Ziel ist grundsätzlich in der Lage, den optimalen gemeinsamen Anteil zu generieren, der verwendet werden soll. Mit nur einem gemeinsamen Abschnitt ist dies nicht zu schwierig, aber ich muss mehr als einen zulassen (aber nicht unbegrenzt, oder die Vorteile wären trivial).
Mit optimaler meine ich "kleinste Anzahl von Elementen ausgedrückt". Also im obigen Beispiel "kostet" 5 (Anzahl der Elemente) die Variable common
variabel zu machen. Die Sätze 1 und 2 kosten beide 2 (eins zum Referenzieren, eins zum Hinzufügen des zusätzlichen Elements), insgesamt 7. Ohne die Ersetzung würden diese 12 speichern (je 6 Elemente). In ähnlicher Weise würde ein Element aus einem referenzierten in Subtrahieren „Kosten“ 1.
Ein weiteres Beispiel, {a,b,c,d}, {a,c,d,e}, {e,f,g,h} and {e,f}
common1 = {a,c,d}
common2 = {e,f,g}
set1 = common1 + b
set2 = common1 + e
set3 = common2 + h
set4 = common2 - g
Indem mehrere gemeinsame Abschnitte könnte dies viel schwieriger wird. Gibt es einen Namen für diese Art von Problem oder ähnliches? Es scheint, dass es mit der Komprimierung zusammenhängen könnte, aber ich konnte nicht zu viele Ressourcen finden, um damit anzufangen.
Einige andere Details, die relevent werden können:
- dürfen mehrere gemeinsame Abschnitte referenzieren einen Satz darstellen kann gültig sein, aber nicht erforderlich ist.
- Für meinen Anwendungsfall werden die Sätze in der Regel etwa 20 Elemente und etwa 10 verschiedene Sätze sein.
Möglicherweise verwandt: [formale Begriffsanalyse] (https: //en.wikipedia.org/wiki/Formal_concept_analysis). –
Kann ein Element in mehreren gemeinsamen Sätzen enthalten sein? Z.B. common1 = {a, b, c, d}; common2 = {d, e, f, g}; set1 = {a, b, c, d, e, f, g} = gemeinsame1 + gemeinsame2 - d. – m69
Ja, keine Probleme mit gemeinsamen Sets. - do würde nicht einmal angegeben werden, da es eine Menge ist, keine Liste, so dass Duplikate ignoriert werden –