【专题】环形染色问题

本文转载自 知乎,本文在原文的基础上做出了如下改进:

  • 重绘了所有插图;
  • 将知乎所有公式图片换成 LaTeX \LaTeX LATEX

如图所示,一个圆环被分成 m ( m ≥ 2 ) m(m\geq2) m(m2) 块,用 n ( n ≥ 2 ) n(n\geq2) n(n2) 种不同颜色给每一块染色,要求相邻两块的颜色不相同。此类问题称之为环形染色问题。

环形染色问题可以分为两种,一类是圆环中心区域要染色,一类是圆环中心区域不染色。因为中心区域染色问题在给中心涂色之后,剩余部分即为中心区域不染色的问题,所以本文重点讲解中心区域不染色问题。

本文先针对 m = 4 m=4 m=4 m = 5 m=5 m=5 以分类与分步的做法解决,而后给出此类问题的通解。

中心区域不染色

m = 4 , n = 4 m=4, n=4 m=4,n=4 的情况

如图,环形区域被分成 4 4 4 块,用 4 4 4 种不同的颜色给这 4 4 4 块区域染色,要求相邻区域颜色不同。

解:

我们先给四块区域标注为 A , B , C , D A, B, C, D A,B,C,D。先给 A A A 染色,则有 4 4 4 种颜色,而后 B B B 有三种, C C C 也是有三种,但是 D D D 则需要分类来讨论。因为 D D D A , C A, C A,C 都相邻,且 A , C A,C A,C 都已经涂好颜色,则 A , C A,C A,C 若同色,则 D D D 有三种颜色可选, A , C A,C A,C 不同色,则 D D D 只有两种颜色可以选择,如下图所示:

则共有 4 × 3 × ( 1 × 3 + 2 × 2 ) = 84 4\times 3\times (1\times 3+2\times 2)=84 4×3×(1×3+2×2)=84 种染色方式。

m = 5 , n = 4 m=5, n=4 m=5,n=4 的情况

如图,环形区域被分成 5 5 5 块,用 4 4 4 种不同的颜色给这 5 5 5 块区域染色,要求相邻区域颜色不同。

解:

同上,给五块区域标注为 A , B , C , D , E A, B, C, D, E A,B,C,D,E。依旧是按顺序给 5 5 5 块区域染色。则在考虑 A , D A, D A,D 同色问题时,需考虑到 A , C A, C A,C 是否同色。若 A , C A, C A,C 同色,则 A , D A,D A,D 必定不同色。只有 A , C A,C A,C 不同色,才有可能出现 A , D A,D A,D 同色。

因此有以下分类:

  1. A , C A, C A,C 同色:则 A , D A,D A,D 必定不同色,则五块区域一次有 4 , 3 , 1 , 3 , 2 4,3,1,3,2 4,3,1,3,2 种选法,共有 4 × 3 × 1 × 3 × 2 = 72 4\times 3\times 1\times 3\times 2 = 72 4×3×1×3×2=72 种染色方式;
  2. A , C A,C A,C 不同色:
    1. A , D A,D A,D 同色:则五块区域依次有 4 , 3 , 2 , 1 , 3 4, 3, 2, 1, 3 4,3,2,1,3 种选法,共有 4 × 3 × 1 × 3 × 2 = 72 4\times 3\times 1\times 3\times 2 = 72 4×3×1×3×2=72 种染色方式;
    2. A , D A,D A,D 异色:则五块区域依次有 4 , 3 , 2 , 2 , 2 4, 3, 2, 2, 2 4,3,2,2,2 种选法,共有 4 × 3 × 2 × 2 × 2 = 96 4\times 3\times 2\times 2\times 2 = 96 4×3×2×2×2=96 种染色方式;

共计有 72 + 72 + 96 = 240 72+72+96=240 72+72+96=240 种染色方式。

任意 m ≥ 2 , n ≥ 2 m\geq 2,n\geq 2 m2,n2 的情况

记当有 m m m 块区域时,染色方法有 a m a_m am 种;则当 m m m 1 , 2 , 3 , … 1,2,3,\dots 1,2,3, 时,分别有 a 1 , a 2 , a 3 , … a_1,a_2,a_3,\dots a1,a2,a3, 种染色方式。

首先考虑直线型染色:如下图所示,有 m m m 块区域, n n n 种颜色,要求相邻区域不同色。

则除了第一块有 n n n 种涂法,其余各块都是 n − 1 n-1 n1 种。则共有 n ( n − 1 ) m − 1 n(n-1)^{m-1} n(n1)m1 种染色方式。

现在把直线型的两端对接,拼成一个环形。

当两端颜色相同时,首尾对接则会出现有两块相邻区域颜色相同。其余相邻区域颜色则均不同。此时若把相邻颜色相同的区域合并为一个区域,则此时的环形有 m − 1 m-1 m1 块区域,任意相邻区域颜色均不相同,对应 a m − 1 a_{m-1} am1 种染色方式。

当两端颜色不同时,首尾对接,则任意相邻区域颜色均不相同,此时的环形有 m m m 块区域,对应 a m a_m am 种染色方式。

因此有 a m + a m − 1 = n ( n − 1 ) m − 1 a_m+a_{m-1}=n(n-1)^{m-1} am+am1=n(n1)m1

对其稍作变形,有:
a m + a m − 1 = ( n − 1 ) ( n − 1 ) m − 1 + ( n − 1 ) m − 1 = ( n − 1 ) m + ( n − 1 ) m − 1 \begin{aligned} a_m+a_{m-1} &= (n-1)(n-1)^{m-1}+(n-1)^{m-1}\\ &= (n-1)^m+(n-1)^{m-1}\\ \end{aligned} am+am1=(n1)(n1)m1+(n1)m1=(n1)m+(n1)m1
移向可得:
a m − ( n − 1 ) m = − ( a m − 1 − ( n − 1 ) m − 1 ) a_m-(n-1)^m=-(a_{m-1}-(n-1)^{m-1}) am(n1)m=(am1(n1)m1)
分类讨论如下:

  1. a m − ( n − 1 ) m = 0 a_m-(n-1)^m = 0 am(n1)m=0

    a m = ( n − 1 ) m a_m=(n-1)^m am=(n1)m,考虑 a 2 = n ( n − 1 ) a_2=n(n-1) a2=n(n1),与之矛盾,舍;

  2. a m − ( n − 1 ) m ≠ 0 a_m-(n-1)^m \ne 0 am(n1)m=0

    b m = a m − ( n − 1 ) m b_m=a_m-(n-1)^m bm=am(n1)m,则有 b m b m − 1 = − 1 \frac{b_m}{b_{m-1}} = -1 bm1bm=1,为等比数列

    b m = ( − 1 ) m − 2 × b 2 = ( − 1 ) m × b 2 b_m=(-1)^{m-2}\times b_2=(-1)^m\times b_2 bm=(1)m2×b2=(1)m×b2

    代入 b 2 = a 2 − ( n − 1 ) 2 = n ( n − 1 ) − ( n − 1 ) 2 = n − 1 b_2=a_2-(n-1)^2=n(n-1)-(n-1)^2=n-1 b2=a2(n1)2=n(n1)(n1)2=n1

    b m = ( − 1 ) m × b 2 = ( − 1 ) m × ( n − 1 ) b_m=(-1)^m\times b_2=(-1)^m\times (n-1) bm=(1)m×b2=(1)m×(n1)

    代入 b m = a m − ( n − 1 ) m b_m=a_m-(n-1)^m bm=am(n1)m

    a m = ( n − 1 ) m + ( − 1 ) m × ( n − 1 ) a_m=(n-1)^m+(-1)^m\times (n-1) am=(n1)m+(1)m×(n1)

验证一下:

  1. 代入 m = 4 , n = 4 m=4, n=4 m=4,n=4,有 3 4 + 3 = 84 3^4+3=84 34+3=84
  2. 代入 m = 5 , n = 4 m=5, n=4 m=5,n=4,有 3 5 − 3 = 240 3^5-3=240 353=240

中心区域染色

圆环有 m m m 块区域,再加上中心区域共有 m + 1 m+1 m+1 块区域,有 n + 1 n+1 n+1 种颜色

由于中心区域与外环所有区域均相邻,则先涂中心区域,有 n + 1 n+1 n+1 种涂色方法;

此时余下 m m m 块区域与 n n n 种颜色,即为中心不染色时 m m m 块区域和 n n n 种颜色的环形染色问题,代入上述公式,共有 a m = ( n − 1 ) m + ( − 1 ) m × ( n − 1 ) a_m=(n-1)^m+(-1)^m\times(n-1) am=(n1)m+(1)m×(n1) 种染色方法。

合计共有 ( n + 1 ) × a m = ( n + 1 ) × [ ( n − 1 ) m + ( − 1 ) m × ( n − 1 ) ] (n+1)\times a_m=(n+1)\times [(n-1)^m+(-1)^m\times(n-1)] (n+1)×am=(n+1)×[(n1)m+(1)m×(n1)] 种染色方法。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 环形链表的约瑟夫问题是指给定一个环形链表,从链表中的某个节点开始,按照一定规则进行报数并删除节点,直到所有节点都被删除。具体的解决方法是使用一个不带头结点的循环链表来处理。首先构建一个有n个节点的单循环链表,然后从指定的节点开始,按照规定的报数规则进行计数,当计数到达指定数值m时,删除对应的节点。然后从被删除节点的下一个节点重新开始计数,直到最后一个节点被删除,算法结束。遍历环形链表可以通过一个辅助指针curBoy来实现,通过一个while循环遍历链表,直到curBoy.next等于链表的头节点结束。生成一个出圈顺序可以通过创建一个辅助指针helper来实现,首先让helper指针移动m-1次,然后将指向的节点出圈。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [用环形链表解决约瑟夫问题](https://blog.csdn.net/yunhech/article/details/107444728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【数据结构+算法环形链表——约瑟夫环(Josephu)问题](https://blog.csdn.net/m0_45097186/article/details/104227805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值