所有有效的点组合,以最快(速度)有效的方式

Ben*_*zun 6 c# algorithm combinations

我知道有很多关于生成元素组合的问题,但我认为这个问题有一些值得提出的新问题:

对于我的宠物项目,我要预先计算很多状态,以便以后改进应用程序的运行时行为.我挣扎的一个步骤是:

给定两个整数的N个元组(让我们从这里称它们为点,虽然它们不在我的用例中.但它们大致与X/Y相关)我需要计算给定规则的所有有效组合.

规则可能是这样的

  • "包含的每个点都排除了具有相同X坐标的所有其他点"
  • "包含的每个点都排除了具有奇数X坐标的每个其他点"

我希望并期望这一事实能够改善选拔过程,但我的数学技能只是在我打字时复活,我无法想出一个优雅的算法.

  • 点集(N)开始很小,但很快就会超过64(对于"长时间用作位掩码"解决方案)
  • 我在C#中这样做,但如果它解释了潜在的想法,任何语言的解决方案都应该没问题

谢谢.


更新以回应弗拉德的回答:

也许我想要概括这个问题的想法很糟糕.我上面的规则是在飞行中发明的,只是占位符.一个现实的规则看起来像这样:

  • "包括的每个点都排除了所选点之上的三角形中的每一个点"

根据该规则并选择(2,1)我将排除

  • (2,2) - 正上方
  • (1,3)(2,3)(3,3) - 下一行
  • 等等

所以规则是固定的,而不是一般的.遗憾的是,它们比我最初提供的X/Y样品更复杂.

Vla*_*lad 0

对于某些特殊的规则类型,您的任务似乎很简单。例如,对于示例规则#1,您需要选择 X 的所有可能值的子集,然后为子集中的每个值分配任意 Y。

对于通用规则,我怀疑是否有可能在没有任何人工智能的情况下构建有效的算法。