我有以下数据,我想在C中有效表示。检索时间比内存消耗更受青睐,但我很乐意不要耗尽我的所有记忆。
输入值是逻辑值0
,1
或?
(undef)的序列 l_1,...,l_n 。每个序列对应一系列输出 l_1,...,l_m 的逻辑值(来自同一个Universe)。
数据稀少。 (输入 - 输出映射仅针对某些输入序列给出,否则隐式规则适用。)
我考虑过:
使用具有良好最坏情况边界的散列。但这有点不愉快,因为我必须对输入序列进行散列。对于足够长的输入序列,这将快速耗尽任何(无符号)整数。
使用trie,但是,如果给我一些密集的表,我最终会做大量的memallocs并将堆碎。它可能不会很好地缓存。
另一个令人不快的事实是我必须记住输出序列,它的长度是可变的。在程序中,存在几个正在讨论的数据结构实例,每个实例都有不同的 m 和 n 值。
您可以将此问题视为表示命题公式的真值表,除了公式的输出是多值的,逻辑是三元的,公式是未知的。
任何想法如何做到这一点?
谢谢!