加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 生成可能的组合

发布时间:2020-12-16 09:09:25 所属栏目:安全 来源:网络整理
导读:我有几个哈希映射,我需要生成以下组合: A: [x-1,y-2,...]B: [x-1,a-4,...]C: [x-1,b-5,...]... 一些可能的组合: A+B; A; A+C; A+B+C... 对于每个组合,我需要生成联合散列映射,并在两个散列映射中使用相同的键执行键值对的操作. 我能想到的就是使用二进制计
我有几个哈希映射,我需要生成以下组合:

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可能会帮助解决这个问题:它的并行集合框架!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读