【发布时间】:2013-07-25 00:49:39
【问题描述】:
因此,Wendy's 宣传他们的三明治有 256 种组合——这意味着有 8 种成分你可以没有(虽然我想知道他们为什么会认为你什么都不包括的组合是有效的,但我离题了)。
通用方法允许您将每个选择的各种状态相乘,从而实现更复杂的组合。在这种情况下,只能包含或排除 Wendy 的项目。但有些三明治可能有两种芥末可供选择(但不能同时使用两种芥末,以节省成本)。
这些都相当简单。你将选项的数量相乘,所以对于 Wendy's 来说:
2*2*2*2*2*2*2*2 = 256
如果他们像上面那样多样化他们的芥末选择,那就是:
2*2*3*2*2*2*2*2 = 384
走得更远似乎更难。
如果您将芝麻作为单独的项目,那么他们需要面包项目。包子可以有芝麻,包子可以不包子,芝麻不能包子。这可以简化为具有三种状态(无、有种子的小圆面包、无种子的小圆面包)的单个小圆面包项目,但在某些情况下无法做到这一点。
例如,戴尔的计算机配置器不允许某些组合(可能插槽已满,放入同一系统时项目不兼容等)。
- 在处理项目可能发生冲突的复杂得多的系统时,有哪些合适的组合方法?
- 有什么好的、通用的方法来存储此类信息,而无需为每个产品/组合/项目编写代码来捕获冲突?
- 当系统必须处理复杂的冲突组合时,是否有一种简单的方式可以说“有 X 种方式来配置您的系统/三明治”?
【问题讨论】:
-
底部有 3 个真正的问题,用项目符号表示。对于人们为什么投票结束“不是一个真正的问题”,我将不胜感激 - 我应该以某种方式重新格式化它吗?
-
是的,它只对正在寻找这个问题的答案的一小部分人有所帮助。就像一个关于如何转义字符串的问题只会帮助一小群正在寻找如何转义字符串的人。
-
@blesh - 我很欣赏它本质上非常普遍 - 这是故意的。在我开始构建这个系统之前,我想从多个角度来看待它,看看可以尝试哪些方法。然而,它对今天的程序员来说非常有效。有很多创作网站(hulu、createspace、cafepress)具有非常、非常、非常基本的组合和创建项目的能力。他们没有尝试解决这个难题,例如,如果解决了这个难题,他们的客户可以节省大量时间来制作具有相同图像的 20 种不同商品。定制是非常有利可图的。
-
更不用说第一个具有此功能的开源购物车将比其他购物车获得巨大优势。不过,制作一个店主可以以简单方式创建规则的系统是另一个难题。
-
@AdamDavis 我已经为您添加了答案。我相信它不仅为使用动态和条件规则验证对象的方法提供了指导,而且还提供了一些属性和对象结构的具体示例供您使用。它不能完全回答问题 #3,但这是一个肯定可以解决的数学函数。让我知道你的想法,我会提供更多细节。我真的很想搞定这个。
标签: algorithm configuration combinatorics