list-of-list与hash-of -hes

时间:2013-03-09 21:42:21

标签: data-structures processing-efficiency hash-of-hashes

设定: 我需要存储与字符串 - 字符串对相关的特征向量。字符串 - 字符串对编码输入 - 输出关系。将有相对较少的输入X(例如5),并且对于每个输入x,将会有相对较小的输出Y|x(例如10)。

问题是,哪种数据结构最快?

其他相关信息:

  1. 每个输入的输出通常不同,不能假设每个X具有相同的输出数。
  2. 查询将在“很多”时间内完成(可能是1000次)。
  3. 输入将被频繁采样,但对于每个输入,通常会经常访问一个或两个输出,其余的将不经常访问或根本不访问。
  4. 目前,我正在考虑三种可能性:

    1. list-of-lists :使用索引访问外部列表(表示输入X[i]),使用索引访问内部列表(表示输出Y[i][j])。
    2. hash-of-hashes :与上述相同。
    3. flat hash key = (input,output)

1 个答案:

答案 0 :(得分:0)

如果您有字符串,则不清楚如何在不使用散列的情况下有效地查找索引以使用列表列表。如果你可以传递保持对索引的引用的东西(例如,如果输出集是固定的,你可以定义它们的枚举),而不是字符串列表的列表会更快(假设你的意思是列表在具有O(1)元素访问权限的“不一定链接列表”意义。否则你也可以直接哈希并省去自己的努力。

如果没有,那就留下哈希哈希的哈希值。你的访问模式是什么样的?您是否总是要求X,Y,或者您是否需要访问X的所有输出?散列(X + Y)可能大致相当于散列(X)+散列(Y)(两者通常会遍历所有字母以生成散列。因此,单个散列更灵活,稍微(几乎可以忽略不计)从3开始,听起来你可能需要哈希哈希,无论如何。