当前位置: 首页 > 知识库问答 >
问题:

计算一个周期中的排列数

周超英
2023-03-14

我有一个数字 1 到 n 的排列,在每个回合中,一个排列函数用于将当前排列映射到新的排列。

该函数由F(i)=p[i]定义,它将当前置换的每个元素映射到新置换中的一个位置。由于这个函数是内射和满射的,可以证明我们总是再次得到第一个置换。(这实际上是排列图中的一个循环)

例如[2,3,1]-

作为输入,我有一种特殊的排列,像这样:

[2,1, 
4,5,3, 
7,8,9,10,6,
17,11,12,13,14,15,16,
18,19,20, 
29,21,22,23,24,25,26,27,28,
40,30,31,32,33,34,35,36,37,38,39,
53,41,42,43,44,45,46,47,48,49,50,51,52]

它由一些子排列组成(每行都有一组属于其索引集的数字)

我的问题是,要达到第一种排列,最少需要多少步。

作为prolog中的一个练习问题,我想计算每个子排列的移动次数并得到它们的lcm,但我不确定如何实现这一点(如何计算每个子排列的移动次数)

任何帮助将不胜感激


共有1个答案

寇宏义
2023-03-14
匿名用户

置换< code>p可以被看作来自集合< code>{1,2,...,n}到自身上。现在你看起来要求的是这个排列和它本身的最小串联数...o p(其中< code>o是与< code >(f o g)(I):= f(g(I)))s . t的串联运算符。您将得到恒等置换< code>p0,其中< code>p0(i) = i。

你有一个置换,可以很容易地分解成循环

 类似资料:
  • 问题 你需要查找星期中某一天最后出现的日期,比如星期五。 解决方案 Python的 datetime 模块中有工具函数和类可以帮助你执行这样的计算。 下面是对类似这样的问题的一个通用解决方案: #!/usr/bin/env python # -*- encoding: utf-8 -*- """ Topic: 最后的周五 Desc : """ from datetime import dateti

  • 我在配置中错过了什么? “无限”复选框需要勾选还是不勾选?

  • 我正在努力寻找一个简单而有效的解决方案来计算一个月中的一周和一天。例如,如果给定的日期是2018年3月5日的第一个星期一,那么我想得到接下来6个月每个月的第一个星期一的日期,例如:和2018年5月3日星期一等等。 我试着从这个问题中使用以下代码。然而,下面的代码只返回我希望它返回整个日期的周数。 但是我很困惑,不知道如何修改上面的代码来解决这个问题。任何帮助都将不胜感激。

  • 问题内容: 我如何知道JavaScript的周数和年份来计算日期?对于第20周和2013年以获得5/16/2013,我正在尝试这样做: 问题答案: function getDateOfWeek(w, y) { var d = (1 + (w - 1) * 7); // 1st of January + 7 days for each week 这使用简单的周定义,即2013年的第20周是5月14日

  • 问题内容: 给定一个星期数,例如,您如何计算从星期一开始的那一周中的天数? 第40周的rfc-3339输出示例: 问题答案: PHP 下面的帖子是因为我是个白痴,没有正确阅读问题,但是会获得从星期一开始的一周中的日期,给出的是日期,而不是星期数。 在PHP中 ,改编自PHP日期手册页上的这篇文章 来自的输出:

  • 本文向大家介绍计算C ++中的元音排列,包括了计算C ++中的元音排列的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个数字n,我们必须计算使用这些规则可以形成多少个长度为n的字符串-每个字符都是小写的元音每个元音'a'只能跟一个'e'。每个元音“ e”只能跟一个“ a”或“ i”。每个元音“ i”都不能跟在另一个“ i”之后。每个元音“ o”只能跟一个“ i”或“ u”。每个元音“ u”只