微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

scala – 生成可能的组合

我有几个哈希映射,我需要生成以下组合:

A: [x->1,y->2,...]
B: [x->1,a->4,...]
C: [x->1,b->5,...]
...

一些可能的组合:

A+B; A; A+C; A+B+C...

对于每个组合,我需要生成联合散列映射,并在两个散列映射中使用相同的键执行键值对的操作.

我能想到的就是使用二进制计数器并将数字映射到相应的哈希映射:

001 -> A
101 -> A,C
...

虽然这个解决方案有效,但当我有超过100个哈希映射时,模运算很耗时.我是Scala的新手,但我相信必须有更好的方法来实现这一目标吗?

解决方法

好吧,想想你的地图有多少组合:假设你有N个地图.

(the maps individually) + (pairs of maps) + (triples of maps) + ... + (all the maps)

这当然是

(N choose 1) + (N choose 2) + ... + (N choose N-1)

其中N选择M定义为:

N! / (M! * (N-M)!)

对于N = 100和M = 50,N选择M超过100,000,000因此“耗时”实际上并不能解决问题!

哦,这假设排序是无关紧要的 – 即A B等于B A.如果这个假设是错误的,那么你所面临的排列明显多于可见宇宙中的粒子

为什么scala可能会帮助解决这个问题:它的并行集合框架!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐