曼哈顿距离与切比雪夫距离的转化及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.无标号有根树的计数


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[译]如何在.NET Core中使用System.Drawing?

你大概知道System.Drawing,它是一个执行图形相关任务的流行的API,同时它也不属于.NET Core的一部分。最初是把.NET Core作为云端框架设计的,它不包含非云端相关API。另一方面,.NET Core是跨平台框架,它不包含任何操作系…

关于Visual Studio 2019的前期详情

近日,来自微软公司的 John Montgomery 正式宣布,Visual Studio 2019已进入开发阶段。Montgomery 表示,之所以选择在这个时间点公开这个消息,是因为微软准备在 GitHub 上公开可见的项目(包括 .NET 和 Roslyn&#xff09…

开源的,跨平台的.NET机器学习框架ML.NET

微软在Build 2018大会上推出的一款面向.NET开发人员的开源,跨平台机器学习框架ML.NET。 ML.NET将允许.NET开发人员开发他们自己的模型,并将自定义ML集成到他们的应用程序中,而无需事先掌握开发或调整机器学习模型的专业知识。在采用通用机器学…

虚树-树上动态规划的利器

虚树 问题引入 在一类树上动态规划问题中,题目给出的询问往往包含树上的很多各节点,并保证总的点数规模小于某个值. 如果我们直接在整颗树上进行dpdp的话,时间复杂度与询问的次数有关,这显然是不可接受的,如果我们可以找到一种动态规划的方法,使其时间复杂度与询问中点的实际…

微软推出Visual Studio Kubernetes工具包预览版

微软表示,利用 Visual Studio Kubernetes 这个工具,使用者可以直接在该环境中,构建 Kubernetes 容器应用程序项目,或者让现有的 .NET 网页应用程序也兼容 Kubernetes。除了公有云基础架构环境要支持 Kubernetes,微软现…

基于docker 如何部署surging分布式微服务引擎

1、前言转眼间surging 开源已经有1年了,经过1年的打磨,surging已从最初在window 部署的分布式微服务框架,到现在的可以在docker部署利用rancher 进行服务编排的分布式微服务引擎,再把业务进行剥离, 通过配置路径就能驱…

DevOps 实践:千里之行

在上一篇 DevOps 渊源:角色消融 中我们分析了在作坊式团队中的责任重叠,也回顾了 DBA 角色的消融。那么,如今我们讲的 DevOps 又是什么角色的消融呢? 我想你已经猜到了,接下来要消融的角色就是运维人员了。那这次又是什…

约数个数

约数个数 题目大意: 求a到b之间每个数的约数的个数之和 原题: 题目描述 定义f(x)为x的约数个数,x为正整数。 f(a)f(a1)……f(b),即a,b之间每个数的约数的总和。 输入 一行两个正整数a、b,以一个空格隔开。 输出…

asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程...

最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionless的学习做下笔记!Exceptionless是什么?能做什么呢?“Exceptionless”这…

使用 IIS 在 Windows 上托管 ASP.NET Core2.0

准备:操作系统:Windows Server 2008 R2 或更高版本开发环境:VS2017回到顶部第一步:新建项目ASP.NET Core Web应用程序在 Visual Studio 中,选择“文件”>“新建”>“项目”。在新建项目对话框的左侧窗格选择“.N…

数学推导题,NTT,快速数论变换,Wannafly-导数卷积

导数卷积 题目描述 题解 参考了一下标程的推导过程,因为这个推导对我这种数学弱渣真的有点难鸭. [1]f(x)f(x)f(x)的iii次导函数: f(i)(x)ai∗i!0!ai1∗(i1)!1!∗x1...an−1∗(n−1)!(n−1−i)!∗xn−1−if^{(i)}(x) a_{i}*\frac{i!}{0!} a_{i1}*\frac{(i1)!}{1!}*x^{1} ...…

使用 C# 代码实现拓扑排序

0.参考资料尊重他人的劳动成果,贴上参考的资料地址,本文仅作学习记录之用。https://www.codeproject.com/Articles/869059/Topological-sorting-in-Csharphttps://songlee24.github.io/2015/05/07/topological-sorting/https://www.cnblogs.com/skywang1…

ASP.NET Core 2.1带来SignalR、Razor类库

随着.NET Core 2.1的发布,微软推出了 ASP.NET Core 2.1。这是一个强大的版本,包括实时通信库SignalR,更新的模板使GDPR更容易遵守,并且针对Angular、React,以及React Redux更新了SPA模板。在2013年发布传统的ASP.NET时…

针对ASP.NET Core Web API的先进架构

.NET Core 最初是在2016年发布的,随着.NET Core 2.0的发布,微软拥有了下一个通用、模块化、跨平台和开源的平台主版本。.NET Core已经创建了许多API,在当前版本的.net框架中均可用。它最初是为下一代ASP.NET解决方案而创建的,但现…

ASP.NET Core 2.1 使用Docker运行

1.新建一个 ASP.NET Core 2.1 项目然后运行一下项目,确保我们刚刚建立的项目可以正常运行。2.编写 Dockerfile新建一个文本文件,命名为 DockerfileFROM microsoft/dotnet:2.1-aspnetcore-runtimeWORKDIR /appCOPY . .EXPOSE 80ENTRYPOINT ["dotnet&…

【DP】和谐的奶牛(jzoj 1750)

和谐的奶牛 题目大意: 有一些括号(保证是合法的,合法:每一个左括号都有自己配对的有括号),现在要将这些括号分为两组(其中一组可以为空),分完组后括号的顺序要和原来的…

费用流-Wannafly Day2 TwoGraph-神题

TwoGraph 题意 题解 这真是一道神题,这题有两点比较难想,其中第一点是最难想的. 我们先考虑只有一张图的情况. 性质: [1]如果给每个点匹配一条边,形成一个(点,边)(点,边)(点,边)对,其中点不能重复出现,边也不能重复出现.那么这些对形成的图的联通块要么是树,要么是环套树. 证…

ASP.NET Core Web API 与 SSL

SSL一直没有真正研究过SSL,不知道下面的理解是否正确。SSL是Secure Sockets Layer的缩写,它用来保护服务器和客户端之前的通信。它是基于信任加密的概念。在介绍SSL的原理之前,首先介绍一下加密(Encryption)的概念。刷…

【模拟】聊天服务器的外部流量

聊天服务器的外部流量 题目大意: 有一个通讯系统,可以将某人邀请进来(name),也可以将某人T出去(-name),也可以向群中的所有人发一条信息(name:…&#xff0…

GitHub宣布GitHub Education 新计划,学校可免费用企业版

今天 GitHub 宣布面向所有学校和教育机构开放 GitHub Education,方便学生和老师免费使用 GitHub 企业版功能,以及学生开发者工具包、GitHub 教室、培训等资源。2014 年,GitHub 推出了学生开发者工具包,其中包括 Azure 等云服务、G…