【问题标题】:Recurrence relation in Josephus p‌r‌o‌b‌l‌e‌mJosephus p‌r‌o‌b‌l‌l‌m 中的递归关系
【发布时间】:2012-08-22 17:19:54
【问题描述】:

josephus problem 可以通过以下递归得到solved

 josephus(n, k) = (josephus(n - 1, k) + k-1) % n + 1
 josephus(1, k) = 1

这种递归关系是如何推导出来的?

【问题讨论】:

标签: math recurrence josephus


【解决方案1】:

约瑟夫斯(n, k) = (约瑟夫斯(n - 1, k) + k-1) % n + 1 ...... (1)

简单来说—— 从公式中的“+1”开始。这意味着重复的 1 次迭代已经完成。现在,我们将剩下 n-1 个人/元素。我们需要以 k 的间隔递归处理 n-1 个元素。但是,现在,由于要删除的最后一个元素位于第 k 个位置,我们将从那里继续。因此,添加了 k-1。此外,这种添加可能会扰乱数组的索引。因此 %n 完成了将数组索引保持在范围内的操作。 希望它足够清晰和详尽:)。

【讨论】:

    【解决方案2】:

    这一段来自维基百科就足够了..

    当索引从 1 开始时,s 处的人从 第一人在位置 ((s-1)\bmod n)+1,其中 n 是总数 人数。令 f(n,k) 表示幸存者的位置。 在第 k 个人被杀死后,我们剩下一个 n-1 的圈子,并且 我们从原始号码中的人开始下一次计数 问题是 (k\bmod n)+1。幸存者的地位 如果我们从 1 开始计数,剩余的圆将是 f(n-1,k); 将其转移以说明我们从 (k\bmod n)+1 产生递归

    f(n,k)=((f(n-1,k)+k-1) \bmod n)+1,\text{ with }f(1,k)=1\,,

    【讨论】:

    • 老实说,我无法理解这句话:then the person at s shifts from the first person is in position,有两个谓词。 “换班”是什么意思?你能向我解释更多吗?我查了中文版和日文版,但是没有这句话。
    猜你喜欢
    • 1970-01-01
    • 2019-10-18
    • 2020-11-09
    • 2017-06-04
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    相关资源
    最近更新 更多