【发布时间】:2013-07-16 07:44:31
【问题描述】:
假设我有一个文档,并且该文档分布在 4 台不同的机器上,我想获得一个重复次数最多的字符(所有 4 台机器相加)。
我的一种方法是在每台机器上使用一个 hashmap 并分别计算每台机器上的频率,然后将该 hashmap 传递到主服务器,来自所有 4 台机器的 hashmap 将被合并。 因此我们会得到频率最高的字符。
但是这里的缓存是我想尽量减少每台机器传过来的数据。
可以进行哪些改进?
[编辑]
每台机器都持有文件的一部分
【问题讨论】:
-
" 我想得到一个重复次数最多的角色(所有 4 台机器加起来)"。我不清楚:“所有 4 台机器合并” 上的计数与仅一台机器上的计数有何不同(如果这是同一个文档)?我想念什么?你的意思是每台机器只保存文件的一部分吗?
-
是的,每台机器都有一部分文件
-
我不会担心数据传输。假设您将字符(2 个字节)、频率(4 个字节)配对。如果您传输 100 个最常见的字符(英文字母有 26 个字母 + 一些特殊字符),传输将是 (2+4)*100 = 600bytes
-
会有一些协议/额外的数据,但我想当你想出一些特殊的协议时,你的数据传输会比一些“愚蠢”的方法高
-
避免显而易见的解决方案的唯一方法会迫使您有时提出新的请求以获取更多信息。我怀疑这是否值得开销。
标签: algorithm distributed-computing