【问题标题】:Counting derangements计数紊乱
【发布时间】:2015-01-20 22:58:35
【问题描述】:

来自 wiki,计数紊乱的方法是,

假设有 n 个人,编号为 1, 2, ..., n。假设有 n 帽子也编号为 1、2、...、n。我们必须找到方法的数量 没有人得到与他/她的号码相同号码的帽子。让我们 假设第一个人拿帽子 i。有 n-1 种方法 第一个做出这样选择的人。现在有两种可能, 取决于我是否拿帽子 1 作为回报:

人 i 不戴帽子 1. 这个案例相当于解决 n - 1 个人和 n - 1 顶帽子的问题:其余 n 个中的每一个 − 1 个人在剩余的 n 个中恰好有 1 个禁止选择 − 1 顶帽子(我的禁止选择是帽子 1)。 第 i 人拿了 1 顶帽子。现在问题减少到 n - 2 个人和 n - 2 顶帽子。

由此推导出以下关系:

!n = (n - 1) (!(n-1) + !(n-2))  

这里我不明白第二部分。我试着这样想问题,

NO.1 : 我是 i 人,所以我不能拿 i'th hat。所以我有 n-1 个选项。这减少了让 n-1 人戴着 n-1 顶帽子的问题,这将乘以 (n-1) 次。

但我无法理解递归调用的第二部分。 从段落中,“我带帽子的人1”如何...? “我的禁帽是1”不是真的吗?那我怎么拿帽子1。否则如果“我的禁帽不是1”那不就减少到NO.1了吗?

所以我或多或少地难以理解递归调用的这一部分,

!n = (n - 1) (!(n-1) + !(n-2))
                       *******

【问题讨论】:

    标签: algorithm recursion dynamic-programming combinatorics


    【解决方案1】:

    为了清楚起见,让我们调用混乱函数f。在f(n),有 n 顶帽子和 n 个人。每个人都可以从n-1 帽子中进行选择。第 1 个人从 n-1 选择帽子 i。人i 仍然有n-1 的帽子可供选择,而其他人有n-2 必须选择(他们不能选择自己的帽子或i)。

    现在我们需要两个案例来说明i 所做的事情。把它想象成

    1. i拿帽子1
    2. i 的人没有戴帽子 1,我们不知道他们以后会拿什么

    在情况 2 中,我们知道人 i 没有戴帽子 1,但仅此而已。以前我们知道那个人in-1 选择,现在他有n-2,就像其他人一样。这意味着我们可以为这种情况计算 f(n-1)。情况1,人i不再被禁止戴帽子1。本质上,我们知道人i和人1交换了帽子,不再需要匹配,因此f(n-2) .

    这两种情况中的任何一种都是可能的,所以我们有一个重复,它将 (n-1) 个选择乘以任何一种发生的可能性,f(n) = (n-1)(f(n-1) + f(n-2))

    【讨论】:

      【解决方案2】:

      有两种说法:

      1. 在 1->i 和 i->1 的 N 的紊乱与 N-2 的紊乱之间存在双射。
      2. 在 1->i 和 i-> j != 1 的 N 的紊乱与 N-1 的紊乱之间存在双射。

      第一个很明显:一旦从 {1, ..., n} 的混乱中删除 1->i 和 i->1,剩下的 n-2 个项目就会混乱.相反,如果你有一个 {2, 3, ..., i-1, i+1, ..., n} 的紊乱,那么你可以把它变成一个 {1, ..., n} 通过添加映射 1->i 和 i->1.

      通过注意到如果您有 {2, ..., n} 的错乱,则可以通过添加映射 1-> 将其变成 {1, ..., n} 的错乱。 i 并将映射到 i 的任何内容更改为映射到 1。相反,如果您有一个 {1, ..., n} 的紊乱,其中 1->i 和 i 不映射到 1,那么您可以通过删除创建一个 {2,...,n} 的紊乱1->i 映射,并将映射到 1 的任何内容更改为映射到 i。

      这为您提供了一种计算紊乱的方法:

      D(n) = sum(i=2..n) (D(n-1) + D(n-2)) = (n-1)(D(n-1) + D(n- 2))

      【讨论】:

      • 我认为最终公式应该更正,它不是“(n-2)(D(n-1) + D(n-2))”---应该是“(n- 1)(D(n-1) + D(n-2))"
      猜你喜欢
      • 2020-06-20
      • 2020-05-23
      • 1970-01-01
      • 2022-07-04
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2011-07-21
      • 1970-01-01
      相关资源
      最近更新 更多