【发布时间】:2012-07-11 23:34:27
【问题描述】:
我偶然发现了一个我正在寻找智能解决方案的问题。这基本上是一个组合问题。
我有五个对象,我需要从中选择两个,我可以选择同一个对象两次,我选择它们的顺序无关紧要。这给了我(5 + 2 - 1 选择 2)= 15 种可能的组合。我现在想将每个组合(即 (1,1) 或 (2, 5))减少到 1 到 15 之间的数字。有什么建议吗?
【问题讨论】:
标签: math probability combinatorics
我偶然发现了一个我正在寻找智能解决方案的问题。这基本上是一个组合问题。
我有五个对象,我需要从中选择两个,我可以选择同一个对象两次,我选择它们的顺序无关紧要。这给了我(5 + 2 - 1 选择 2)= 15 种可能的组合。我现在想将每个组合(即 (1,1) 或 (2, 5))减少到 1 到 15 之间的数字。有什么建议吗?
【问题讨论】:
标签: math probability combinatorics
准字典顺序。为每个选择分配其在字典顺序中的位置,第二个组件不小于第一个组件。
(i,j) -> (15 - (7-i)*(6-i)/2) + (j - i) + 1
【讨论】:
假设你有一个组合 (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,如果我的算术是正确的。
i <= j,而不是i < j,因为 OP 可以选择相同的术语两次(例如 (4,4))。不过,我仍然无法匹配您的号码。
i < j 不正确,因为 4 = 4,而不是 4 i <= j,不是i < j。第二:取你的公式,((i+1)+5)*(i-1)/2 + (j-i+1)。代入 i=4,j=5。你得到 17,而不是 14。