- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要找到一种内存寻址方法来为对应于从 0 到 n-1 的“nCk”值组合的值分配内存(静态硬件)。
假设 'n' 为 6,'k' 为 4,我需要存储与组合对应的值(8 位或 16 位):
(1,2,3,4) (1,2,3,5) (1,2,3,6) (1,2,4,5) (1,2,4,6) (1,2,5,6) (1,3,4,5) (1,3,4,6) (1,3,5,6) (1,4,5,6) (2,3,4,5) (2,3,4,6) (2,3,5,6) (2,4,5,6) (3,4,5,6)
一旦我有了“k”(此处为 4)位数字,我应该能够直接访问与“k”元组对应的元素。
第 k 个元组中任何较低的索引都将小于较高的索引,并且没有一个索引是相等的。
是否可以生成一种寻址方案来存储和检索此类数据而无需搜索?这需要在生成地址时以最少的计算和尽可能少的内存来完成。 (我觉得不管用什么方法都会浪费一些内存。)
我想到了针对不同索引使用不同常量的线性哈希,但这会导致大量内存丢失或计算常量的计算复杂度很高。
关于这个问题的任何建议都会有很大帮助。
例子:
(组合->内存中对应的值)
([(1,2,3,4)->14], [(1,2,3,5)->3], [(1,2,3,6)->-4], [(1,2,4,5)->7], [(1,2,4,6)->22], [(1,2,5,6)->-11], [(1,3,4,5)->5], [(1,3,4,6)->3], [(1,3,5,6)->-1], [(1,4,5,6)->9], [(2,3,4,5)->35], [(2,3,4,6)->4], [(2,3,5,6)->7], [(2,4,5,6)->-2], [(3,4,5,6)->6])
如果我对上述模块的输入是 (2,3,5,6) 我应该可以直接得到值 (7)。
编辑: 'n' 和 'k' 总是偶数。
最佳答案
我对问题的理解
因此,据我了解您的问题,用于检索数据的可能“键”是在 n 个值中选择 k 个值。
与:
简单命题
让我们从一个简单的命题作为引用点开始。
您可以认为“ key ”中存在的值是必须在“n”位地址中设置为 1 的位:
分而治之:n=16,k=2
让我们以这种特殊情况为例:n=16,k=2。
对于前面的解决方案,我们使用 2^16 个字的内存,而只有 16*15/2 = 120 个可能的键。
对于这种情况,分而治之的策略可以是:
使用这个初步测试,您可以在这种情况下使用:
2^8 + 2^8 + 64 = 576 个单词
分而治之:n=16,k=3
让我们尝试用更大的 k 值做同样的事情:k = 3
键的最小值介于 0 和 13 之间(因为如果这是 13,则其他 2 个值将是 14 和 15)。可以很容易地找到第一个设置位。
所以我们可以将问题减少到 14 个子问题(所有的 k=2,所以我们可以使用之前研究的案例来优化每个子问题的内存使用):
我没有计算过,但这可能比最初的简单解决方案提供更好的内存使用。
“对称”:n=6,k=4
这里是在6个中选择4个,所以相当于决定了2个没有选择的值是多少,所以我们在内存优化上类似于“n=6,k=2”的情况。
希望这对您有所帮助。
关于algorithm - 内存寻址方法为对应于 'nCk' 值组合的值分配内存(静态硬件)从 0 到 n-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21241921/
我想检查我的应用程序或系统中是否存在库。在 Java 中,我通常执行 System.loadlibrary,但是有谁知道 C 中类似的相应调用吗? 最佳答案 是dlopen打开一个库,dlsym 从加
我在 typescript 中输入以下内容 export type Excludable = T & { isExcluded?: boolean } 其中过滤值: export type Filte
我最近在我的应用程序中添加了一种方法,可以自动格式化 TextView ,从“50000”到“50,000”,效果绝对完美。现在我遇到的问题是,在我的应用程序中,有多个按钮功能可以从该 TextVie
SELECT * FROM conversations WHERE chatMembers LIKE '%1%'AND chatMembers LIKE '%10%' 对话表 id | chatMem
我正在编写一个需要将 Java Date() 值保存到 MySQL 数据库的 RESTful Web 服务,但是,我不确定 MySQL 中可以保存 Java Date() 的数据类型是什么,或者我是否
同样,在任何 Red Hat 或 JBoss 站点上都没有关于此的信息,所以我在这里问... 我不确定是 13 还是 14。 最佳答案 Mapping the Community versions w
同样,在任何 Red Hat 或 JBoss 站点上都没有关于此的信息,所以我在这里问... 我不确定是 13 还是 14。 最佳答案 Mapping the Community versions w
我曾尝试使用 swift 开发一款利用 iPhone 的 3D 触摸硬件的游戏。然而,当我将我的应用程序提交到 App Store 时,它被拒绝了,因为该游戏无法在 iPad 上玩。 我的问题是,
Qt 的有序关联容器对应项 std::map是QMap , std::set是QSet , 对于无序关联容器 std::unordered_map是QHash . 我应该用什么来代替std::unor
JavaScript 方法 String.fromCharCode() 在以下意义上与 Python 的 unichar() 等效: print unichr(213) # prints Õ on t
正如谷歌在 "Discontinuing support for JSON-RPC and Global HTTP Batch Endpoints" 中提到的那样,Google API 客户端库已重新
我正在使用 MapLayer 和 MapOverlay 在 map 中创建自己的路径/折线,GPS 捕获的所有点都存储在一个结构中,以便我可以访问它们。随时。 现在,我希望路径在用户操作 map (缩
我们使用 Adobe Flash Builder 创建由 Flex 提供支持的交互式 Web 应用程序。现在我们正在寻找替代方案,让我们在 UI 设计和迎合 HTML5 的编码方面拥有同样的开发便
我想知道Android/Java 中类似C#/C++ 中的GetTickCount 方法的相应方法吗? 最佳答案 Android 为 SystemClock.uptimeMillis() .请注意,u
我用 Vue + Phaser 开始了新项目,但是当我尝试加载 Assets 时,this.game.load.image 中的“load”和“add”返回“undefined”。我尝试从 JS 文件
我是一名优秀的程序员,十分优秀!