我有一个函数,可以选择列表的笛卡尔积,使得重复元素的数量最高:
import Data.List (nub)
f :: Eq a => [[a]] -> [[a]]
f xss = filter ((==) minLength . length . nub) cartProd
where
minLength = minimum (map (length . nub) cartProd)
cartProd = sequence xss
例如:
*Main> f [[1,2,3],[4],[1,5]]
[[1,4,1]]
但是:
*Main> sequence [[1,2,3],[4],[1,5]]
[[1,4,1],[1,4,5],[2,4,1],[2,4,5],[3,4,1],[3,4,5]]
我的函数f的结果有一个名称吗?
[1,4,1,4]
比[1,1,1,4]
有更多的“重复项”吗?为什么(不是)?)即便如此,您可能会喜欢在维基百科上阅读有关该词的内容,看看它是否与您相关。 - Daniel Wagner[1,4,1,4]
和[1,1,1,4]
一样好(它们的“nub”长度相同),所以我想要类似于“总重复度”的东西。更具体地说,我在生成某些图形时使用它,其中我希望尽可能合并尽可能多的相同节点。 - marc_r[1,4,1,4]
和[1,1,1,4]
的熵是不同的,尽管我认为它们相等。 - marc_r