代表真相表

时间:2015-01-17 11:49:04

标签: c data-structures

我有以下数据,我想在C中有效表示。检索时间比内存消耗更受青睐,但我很乐意不要耗尽我的所有记忆。

输入值是逻辑值01?(undef)的序列 l_1,...,l_n 。每个序列对应一系列输出 l_1,...,l_m 的逻辑值(来自同一个Universe)。

数据稀少。 (输入 - 输出映射仅针对某些输入序列给出,否则隐式规则适用。)

我考虑过:

  • 使用具有良好最坏情况边界的散列。但这有点不愉快,因为我必须对输入序列进行散列。对于足够长的输入序列,这将快速耗尽任何(无符号)整数。

  • 使用trie,但是,如果给我一些密集的表,我最终会做大量的memallocs并将堆碎。它可能不会很好地缓存。

另一个令人不快的事实是我必须记住输出序列,它的长度是可变的。在程序中,存在几个正在讨论的数据结构实例,每个实例都有不同的 m n 值。

您可以将此问题视为表示命题公式的真值表,除了公式的输出是多值的,逻辑是三元的,公式是未知的。

任何想法如何做到这一点?

谢谢!

0 个答案:

没有答案