說我有兩組,set1 = {a,b,c,d,e,f}
和set2 = {a,b,c,d,e,g}
。而不是明確地表達這些,我要像設置簡化
common = {a,b,c,d,e}
set1 = common + f
set2 = common + g
創造的東西如果我們想代表{a,b,c,h}
,我們可以把它表示common - d - e + h
。
我的目標基本上是能夠生成要使用的最佳公共部分。只有一個共同的部分,這不是太具有挑戰性,但我需要允許多個(但不是無限的,或獲得的好處將是微不足道的)。
通過優化,我的意思是「表達的元素數量最少」。所以在上面的例子中,它使得成本5(元素的數量)使common
變量。然後,設置1和2的成本均爲2(一個用於引用通用,一個用於添加額外元素),總計爲7.如果沒有替換,這些將需要12個存儲(每個6個元素)。類似地,在來自被引用將「成本」 1
又如減去的元件, {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
通過允許這成爲很多更具挑戰性的多個共同的部分。是否有這種類型的問題或類似的名稱?看起來它可能與壓縮有關,但是我從沒有找到太多的資源來說明從哪裏開始。
可相應和其他一些細節:
- 被允許引用多個共同的部分來表示的一組可以是有效的,但不是必需的。
- 對於我的用例,這些集合通常會包含大約20個元素和大約10個不同的集合。
可能相關:形式概念分析(HTTPS://en.wikipedia。組織/維基/ Formal_concept_analysis)。 –
元素可以在多個常用集合中嗎?例如。 common1 = {a,b,c,d}; common2 = {d,e,f,g}; set1 = {a,b,c,d,e,f,g} = common1 + common2-d。 – m69
是的,沒有共同的問題。 - 做甚至不會被指定,因爲它是一個不是一個列表,所以重複被忽略 –