【问题标题】:Devise Combinatorics Naming Convention设计组合学命名约定
【发布时间】:2012-07-11 23:34:27
【问题描述】:

我偶然发现了一个我正在寻找智能解决方案的问题。这基本上是一个组合问题。

我有五个对象,我需要从中选择两个,我可以选择同一个对象两次,我选择它们的顺序无关紧要。这给了我(5 + 2 - 1 选择 2)= 15 种可能的组合。我现在想将每个组合(即 (1,1) 或 (2, 5))减少到 1 到 15 之间的数字。有什么建议吗?

【问题讨论】:

    标签: math probability combinatorics


    【解决方案1】:

    准字典顺序。为每个选择分配其在字典顺序中的位置,第二个组件不小于第一个组件。

    (i,j) -> (15 - (7-i)*(6-i)/2) + (j - i) + 1
    

    【讨论】:

    • 谢谢!以为它可能有一个名字。
    【解决方案2】:

    假设你有一个组合 (i, j)

    不失一般性,说 i

    ((7-i)+5)*(i-1)/2 + (j-i+1)
    

    你会拥有

    (1, 1)->1 (2, 2)->6 (3, 3)->10 (4, 4)->13 (5, 5)->15

    (1, 2)->2 (2, 3)->7 (3, 4)->11 (4, 5)->14

    (1, 3)->3 (2, 4)->8 (3, 5)->12

    (1, 4)->4 (2, 5)->9

    (1, 5)->5

    基本上,您首先会在第 i 列之前获得组合数,然后加上 (j-i+1) 作为行号

    【讨论】:

    • 你不能假设i < j; OP 可以选择同一个词两次。同样,这给出了超过 15 的数字,例如(i,j) = 4,5 给出 17,如果我的算术是正确的。
    • @DSM 但 OP 说顺序无关紧要
    • 该顺序无关紧要意味着您可以选择i <= j,而不是i < j,因为 OP 可以选择相同的术语两次(例如 (4,4))。不过,我仍然无法匹配您的号码。
    • @DSM 在 OP 的问题中, (3,4) 和 (4,3) 是相同的组合。在我的公式中,(i,j) 和 (j,i) 表示同一个东西,我总是用 j 来表示较大的数字。
    • 让我最后一次尝试:如果 i = 4,并且 j = 4,则 i &lt; j 不正确,因为 4 = 4,而不是 4 i <= j,不是i &lt; j。第二:取你的公式,((i+1)+5)*(i-1)/2 + (j-i+1)。代入 i=4,j=5。你得到 17,而不是 14。
    猜你喜欢
    • 2012-10-26
    • 2022-07-22
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 2013-04-27
    • 1970-01-01
    • 2013-03-05
    相关资源
    最近更新 更多