曼哈顿距离与切比雪夫距离的转化及prufer序列

目录

  1. 曼哈顿距离与切比雪夫距离的相互转化
  2. prufer序列

1. 曼哈顿距离 与 切比雪夫距离 的相互转化

曼哈顿距离

|x1x2|+|y1y2|=max(x1x2+y1y2,x1x2y1+y2,x1+x2+y1y2,x1+x2y1+y2)|x1−x2|+|y1−y2|=max(x1−x2+y1−y2,x1−x2−y1+y2,−x1+x2+y1−y2,−x1+x2−y1+y2)
与某一个点的曼哈顿距离均为d的所有点构成了一个以该点为中心的对角线长度为2d的菱形。
这里写图片描述

切比雪夫距离

max(|x1x2|,|y1y2|)=max(x1x2,x1+x2,y1y2,y1+y2)max(|x1−x2|,|y1−y2|)=max(x1−x2,x1+x2,y1−y2,y1+y2)
与某一个点的切比雪夫距离均为d的所有点构成了一个以该点为中心的边长为2d的正方形。
这里写图片描述

两种距离之间的转化

由于两种等距离的形状均为正方形,因此可以通过旋转坐标系来互相转化。

(1)曼哈顿距离->切比雪夫距离

将所有的点做变换(x,y)(x,y)->(x+y,xy)(x+y,x−y)

证明

x3=x1+y1,y3=x1y1,x4=x2+y2,y4=x2y2x3=x1+y1,y3=x1−y1,x4=x2+y2,y4=x2−y2
|x1x2|+|y1y2|=max(x1x2+y1y2,x1x2y1+y2,x1+x2+y1y2,x1+x2y1+y2)=max(x3x4,y3y4,y3+y4,x3+x4)=max(|x3x4|,|y3y4|)|x1−x2|+|y1−y2|=max(x1−x2+y1−y2,x1−x2−y1+y2,−x1+x2+y1−y2,−x1+x2−y1+y2)=max(x3−x4,y3−y4,−y3+y4,−x3+x4)=max(|x3−x4|,|y3−y4|)

(2)切比雪夫距离->曼哈顿距离

将所有的点做变换(x,y)(x,y)->(x+y2,xy2)(x+y2,x−y2)

证明

x3=x1+y12,y3=x1y12,x4=x2+y22,y4=x2y22x3=x1+y12,y3=x1−y12,x4=x2+y22,y4=x2−y22
max(|x1x2|,|y1y2|)=max(x1x2,x1+x2,y1y2,y1+y2)=max(x3+y3x4y4,x3y3+x4+y4,y3x3+y4x4,y3+x3y4+x4)=|x3x4|+|y3y4|max(|x1−x2|,|y1−y2|)=max(x1−x2,−x1+x2,y1−y2,−y1+y2)=max(x3+y3−x4−y4,−x3−y3+x4+y4,y3−x3+y4−x4,−y3+x3−y4+x4)=|x3−x4|+|y3−y4|


2.prufer序列

定义

prufer序列是一颗带编号的无根树的编码表示方式,一颗具有nn个节点的带编号的无根树有唯一的长为n2 的prufer序列。

因为每种带编号的无根树对应唯一的prufer序列,所以prufer序列也被用作无根树的计数。

–如下图的无根树的prufer序列为–
这里写图片描述
3,5,1,33,5,1,3

1.如何从一个无根树得到prufer序列?

找树的编号最小的叶子节点,然后将与叶子节点相连的节点编号加入到prufer序列中去,然后删掉这个叶子节点。重复上述过程直到树上只剩2个节点为止,即得到长为n2n−2的prufer序列。

显然prufer序列是唯一的。

2.如何从prufer序列恢复一颗无根树?

找到prufer序列中未出现过的,编号最小的点,这个点即为最远一次被删除掉的,把这个点与prufer序列中的第一个点相连,并弹出prufer中的这个点,重复上述操作,prufer序列处理完成后,剩余两个点直接连到一起即可。

3.重要性质

1. prufer序列中每个编号出现的次数+1等于该编号的点在无根树中的度数。

2. nn个点的无向完全图计数为n(n2)

3. nn个点,每个点的度数为D1,D2,...,Dn,则prufer序列的种数为(n2)!(D11)!(D21)!...(Dn1)!(n−2)!(D1−1)!(D2−1)!...(Dn−1)!

例题

nn个点中,其中有m个点的度数是未知的,求生成树的种数?

remainremain为剩余出现次数
remain=(n2)(Di11)(Di21)...(Dinm1)remain=(n−2)−(Di1−1)−(Di2−1)−...−(Din−m−1)

先把mm个点看成是一种点。
这样答案就是(n2)!(Di11)!(Di21)!...(Dinm1)!remain!
而实际上剩余次数remainremain里面的点可以随意填,形成各种不同的排列,即答案要乘以mremainmremain

因此最终的答案就是:
(n2)!(Di11)!(Di21)!...(Dinm1)!remain!mremain(n−2)!(Di1−1)!(Di2−1)!...(Din−m−1)!remain!mremain

其他计数类型

1.有标号有根树的计数

nn2n=nn1nn−2∗n=nn−1

2.无标号无根树的计数
3.无标号有根树的计数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值