【发布时间】:2010-03-02 21:56:03
【问题描述】:
我知道有很多关于生成元素组合的问题,但我认为这个问题有一定的转折值得提出一个新问题:
对于我的一个宠物项目,我必须预先计算大量状态,以便以后改进应用程序的运行时行为。我挣扎的步骤之一是:
给定两个整数的 N 个元组(我们从这里开始称它们为点,尽管它们不在我的用例中。但它们大致与 X/Y 相关)我需要计算给定规则的所有有效组合。
规则可能类似于
- “包含的每个点都排除了具有相同 X 坐标的所有其他点”
- “包含的每个点都排除了具有奇数 X 坐标的所有其他点”
我希望并期望这一事实能够改善选择过程,但我的数学技能在我打字时才刚刚恢复,我无法想出一个优雅的算法。
- 点集 (N) 开始时很小,但很快就会超过 64 个(对于“使用长作为位掩码”解决方案)
- 我在 C# 中执行此操作,但任何语言的解决方案都应该可以解释基本思想
谢谢。
响应弗拉德的回答更新:
也许我把这个问题概括的想法很糟糕。我上面的规则是即时发明的,只是占位符。一条现实的规则如下所示:
- “包含的每个点都排除了三角形中所选点上方的所有其他点”
根据该规则并选择 (2,1) 我会排除
- (2,2) - 正上方
- (1,3) (2,3) (3,3) - 下一行
- 等等
所以规则是固定的,不是通用的。不幸的是,它们比我最初给出的 X/Y 样本更复杂。
【问题讨论】:
-
如果您能列出您计划使用的所有实际规则,将会很有帮助。
标签: c# algorithm combinations