CN105933091A - 基于空间网络编码的最小权三角剖分方法及装置 - Google Patents
基于空间网络编码的最小权三角剖分方法及装置 Download PDFInfo
- Publication number
- CN105933091A CN105933091A CN201610237784.9A CN201610237784A CN105933091A CN 105933091 A CN105933091 A CN 105933091A CN 201610237784 A CN201610237784 A CN 201610237784A CN 105933091 A CN105933091 A CN 105933091A
- Authority
- CN
- China
- Prior art keywords
- pma
- pmb
- point
- convex hull
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0076—Distributed coding, e.g. network coding, involving channel coding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于空间网络编码的最小权三角剖分方法及装置。该方法包括:对最大凸壳点集合S进行逐层计算,得到凸壳顶点Cm;对凸壳顶点Cm进行环域分割,构成三角形;对相邻三角形进行调整,获得最大凸壳点集合S的最小权三角剖分。借助于本发明的技术方案,极大的降低了空间网络编码计算的复杂性,缩短了编码和译码的时间,调高了同步性。
Description
技术领域
本发明涉及空间网络编码领域,特别是涉及一种基于空间网络编码的最小权三角剖分方法及装置。
背景技术
1908年,俄国数学家M.G.Voronoi提出了Voronoi图,它是计算几何学上非常重要的工具之一,被广泛应用于各个领域中。Voronoi图是由平面区域中连接两邻点的线段的中垂线所形成的区域。它又叫Dirichlet图或Thiessen多边形。Voronoi图的本质属性是由空间实体几何唯一确定的。从Voronoi图的数字几何角度来看,它是针对平面n个离散点而言的,把平面分为若干区域,每一个区域包含一个点,该点所在的区域就是到该点距离最近的点的集合。
设p1,p2是平面上两点,L是线段p1p2的中垂线,L将平面分成两部分LL和LR,位于LL内的点pl具有特性:d(pl,p1)<d(pl,p2),其中d(pl,pi)表示pl与pi之间的欧几里得距离,i=1,2。这意味着,位于LL内的点比平面上其他点更接近点p1,换句话说,LL内的点是比平面上其他点更接近于p1的点的轨迹,记为V(p1),如图1所示。如果用H(p1,p2)表示半平面LL,而LR=H(p2,p1),则有V(p1)=H(p1,p2),V(p2)=H(p2,p1)。
给定平面上n个点的点集S,S={p1,p2,…,pn}。
则定义:
即V(pi)表示比其他点更接近pi的点的轨迹是n-1个半平面的交,它是一个不多于n-1条边的凸多边形区域,称为关于pi的Voronoi多边形或关于pi的Voronoi域。对于S中的每个点都可以作一个Voronoi多边形,这样的n个Voronoi多边形组成的图称为Voronoi图。Voronoi多边形的每条边是S中某两点的连线的垂直平分线,所有这样的两点连线构成一个图,称为Voronoi图的直线对偶图,如图2所示,其中,虚线表示voronoi图,实线表示其对偶图。
Voronoi图有以下一些性质:
性质1、n个点的点集S的Voronoi图至多有2n-5个顶点和3n-6条边。
性质2、每个Voronoi点点好是三条Voronoi边的交点。
性质3、Voronoi图的对偶图实际上时点集的一种那个三角剖分,该三角剖分就是Delaunay三角剖分。性质3表明了可以用构造Voronoi图的方法来求平面点集的三角剖分,但因为效率不高,实际上这种方法较少使用。
Delaunay三角剖分是最常用的一种平面点集的剖分方法,实际上,Delaunay三角剖分方法是基于Delaunay原理的一类三角剖分方法的总称。总体来说,Delaunay三角剖分方法可分为以下几种。
1、翻边方法
1977年,Lawson基于最小内角最大优化准则提出了一种二维点集Delaunay三角剖分翻边方法。该方法的思想是:给定一个二维离散点集,首先对其进行一次初始三角剖分,然后根据最小内角最大化准则判断初始三角剖分中形成凸四边形的共边三角形是否满足优化准则;如果不满足,就交换四边形的两条对角线。一次循环直到所偶的三角形都满足最小角最大优化准则为止。通过计算可以得到,翻边方法的时间复杂度为O(n2)。根据前面的理论分析知道,运用翻边方法扑粉出来的所有三角形边都是Delaunay三角剖分的边,那么最终得到的三角网格一定是Delaunay三角网格。
目前,二维的翻边方法发展比较完善,利用翻边法对二维离散点集进行Delaunay三角剖分原理比较简单、得到的网格质量也较好。1989年,Barry Joe基于空外接球准则提出了一种三维Delaunay三角剖分的翻面法。翻面法的原理跟翻边法的原理是一样的,只不过在三维空间利用翻面法会比较复杂,有待进一步研究。
2、逐点插入方法
随着Delaunay三角剖分的不断发展,大量剖分方法不断被提出来。1981年,一种逐点插入方法被Bowyer和Watson提出来[9][10]。该方法的基本思想是:首先构造点集的一个初始三角剖分,然后逐一地在当前三角剖分中插入一个新点;在插入过程中,要根据Delaunay三角剖分空外接圆住着呢进行三角网格优化,直到整个点集为空集为止。
该方法首先构造一个极大三角形,使得要剖分的点集中所有点都落在该三角形里面;其次,逐一地插入各个新点,每插入一个点,必须搜索位于外接圆内部的点的三角形;然后,将这些三角形从三角形队列中删除,可以形成多边形空腔;最后,将插入点和多边形空腔连接起来,构成若干个以插入点为共同顶点的新三角形。
定位新插入点的位置是逐点插入方法的一个关键步骤,直接关系到剖分网格的好坏和剖分速度的快慢。由于包含插入点的三角形的外接圆位于插入点的附近区域,只要能够准确定位新插入点在当前三角剖分中的位置,便可快速检索到外接圆包围它的三角形。基于定位插入点位置的重要性,现在大量改进的逐点插入方法主要都体现在定位新插入点的位置上。
由于逐点插入方法比较简单、易懂,可以将其推广到三维或者更高维空间的三角剖分。唯一不足的就是该方法时间复杂度较高,很多专家学者在研究时也会将该因素重点考虑进去,从而设计出简单、高效的三角剖分方法。
3、分割合并方法
Hoey和Shamos提出了一种用于生成Voronoi图的分割合并方法,由于Voronoi图与Delaunay图互为对偶图,进而可以间接得到Delaunay三角网格[11]。后来Dwyer、Katajaine、L.J.Guibas等人提出了用于直接生成Delaunay三角网格的分割合并方法。
分割合并方法主要根据数学递归思想,递归将点集分割成规模相当的两部分子集,然后对分割出来的点集进行Delaunay三角剖分,再递归地将两个相邻Delaunay三角剖分进行合并组合,从而生成了整个点集的Delaunay三角网格。改进后的分割合并方法时间复杂度为O(nlogn),目前最好的分割合并方法是Dewall方法。该方法不仅可以应用于二维空间,还可对三维或更高维空间进行三角剖分,虽然分割合并方法实现的时间效率很高,但它的编程却非常复杂。
以上三种方法都是比较典型的Delaunay三角剖分方法,应用范围比较广泛。除了这几种经典方法外,其实还有很多种其他的Delaunay三角剖分方法。在选择三角剖分方法的时候,必须从难易程度、效率高低和贴近实际与否等方面选择,其中逐点插入方法是目前最为简单、最为流行的一种Delaunay三角剖分方法,该方法思想简单、易懂,可推广到维数更高空间的三角剖分。
4、Bowyer-Watson方法
Bowyer-Watson方法是一种先形成粗原始网格,再逐步插入新点进行细化的方法,是一种逐点插入方法。假定已有初始剖分为T,向已有网格内插入新点的Bowyer-Watson方法如下:
步骤1,插入一个新点P到现有的Delaunay三角剖分中。
步骤2,寻找并删除所有外接圆包含P点的三角元素,形成一个Delaunay空腔。
步骤3,连接P点和Delaunay腔壁上所有各点,形成新的Delaunay三角剖分。
应用Bowyer-Watson方法进行网格剖分的整个过程简述如下:
步骤1,家里一个覆盖整个计算区域的粗原始网格。
步骤2,采用Bowyer-Watson方法将边界点逐点插入原始网格。边界点由人工事先给定,并假设边界点的分布式合理的。
步骤3,删除计算区域以外的三角形,并确保边界面的正确三角剖分(进行拓扑相容性处理)。
步骤4,用Bowyer-Watson方法逐步向计算区域内插入新点(对于给定点集,按一定顺序插入即可,若内点是自动生成的,则需要按一定的策略生成内点,直到所有内点都被插入或者网格达到一定的扑粉要求为止。
步骤5,对所生成的网格进行拓扑相容性检查、网格光顺等工作。
空间网络编码
网络编码是通信网络中信息处理和传输理论研究上的重大突破,其核心思想是允许网络节点对传输信息进行编码处理。运用网络编码能够提升网络吞吐量、均衡网络负载和提高网络带宽利用率等。
以“蝴蝶网络”(Butterfly Network)模型为例,阐述网络编码的基本原理。如图3a和图3b所示的“单信源二信宿”蝴蝶网络,设各个链路容量为1,S是信源节点,Y和Z是信宿节点,其余为中间节点。根据“最大流最小割”定理,该多播的最大理论传输容量为2,即理论上信宿Y和Z能够同时收到信源S发出的2个单位的信息,也就是说能同时收到b1和b2。图3a表示的是传统的路由传输方式,节点W执行存储和转发操作。假定W转发信息b1,则链路WX、XY和XZ上传输的信息均为b1,虽然信宿Z收到b1和b2,但信宿Y却只能收到b1(同时收到一个多余的b1),因此信宿Y和Z无法同时收到b1和b2,该多播不能实现最大传输容量。
图3b表示的是网络编码方法,节点W对输入的信息进行模二加操作,然后将操作结果发送至输出链路WX,然后又通过链路XY和XZ,最终达到信宿Y和Z。Y收到b1和后,通过译码操作就能解出b2,因此,信宿Y同时收到了b1和b2。同理,通过译码操作信宿Z也同时收到b1和b2。由此,基于网络编码的多播实现了理论上的最大传输容量。可见,网络编码的核心思想是:具备编码条件的网络节点(比如该节点的入度至少为2,如图3a和图3b中的节点W就具备编码条件,节点X则不具备编码条件)对接收到的信息进行一定方式的处理(即,编码),然后传输给下一级的网络节点,收到消息的下一级节点如果具备编码条件,又对其接收的信息按照同样的方式进行处理和传输,如此反复,直到所有经过处理后的信息都汇聚到信宿节点为止。最后,在信宿节点,通过逆过程的操作(即,译码),即可译出信源发送的原始信息。网络编码是发生在域Fq上的操作,如果域F q无限大,则运用网络编码的多播传输能达到理论上的最大传输容量等于各信宿节点的最大流的最小值,即h=min max flow(ti),ti∈T。
网络编码提出的初衷是为使多播传输达到理论上的最大传输容量,从而能取得较路由多播更好的网络吞吐量。但随着研究的深入,网络编码其它方面的优点也体现出来,如均衡网络负载、提升带宽利用率等。如果将网络编码与其它应用相结合,则能提升该应用系统的相关性能。
具体地,提升吞吐量是网络编码最主要的优点。无论是均匀链路还是非均匀链路,网络编码均能够获得更高的多播容量,而且对于节点平均度数越大,网络编码在网络吞吐量上的优势越明显.从理论上可证明:如果Ω为信源节点的符号空间,|V|为通信网络中的节点数目,则对于每条链路都是单位容量的通信网络,基于网络编码的多播的吞吐量是路由多播的Ω(log|V)倍。
此外,网络编码多播可有效利用除多播树路径外其它的网络链路,可将网络流量分布于更广泛的网络上,从而均衡网络负载。图4a所示的通信网络,其各链路容量为2。图4b表示的是基于多播树的路由多播,为使各个信宿节点达到最大传输容量,该多播共使用SU、UX、UY、SW和WZ共5条链路,且每条链路上传输的可行流为2;图4c表示的是基于网络编码的多播,假定信源节点S对发送至链路SV的信息进行模二加操作,则链路SV、VX和VZ上传输的信息均为,最终信宿X、Y和Z均能同时收到a和b。容易看出,图4c所示的网络编码多播所用的传输链路为9条,比图4b的多播树传输要多4条链路,即利用了更广泛的通信链路,因此均衡了网络负载。网络编码的这种特性,有助于解决网络拥塞等问题。
提高网络带宽利用率是网络编码的另一个显著的优点。在图4b中的路由多播中,为了使得信宿X、Y和Z能够同时收到2个单位的信息,共使用了5条通信链路,每条链路传输可行流为2,因此其消耗的总带宽为:5×2=10.。在图4c表示的网络编码多播中,共使用了9条链路,每条链路传输可行流为1,其消耗总带宽为:9×1=9,因此带宽消耗节省了10%,提高了网络带宽利用率。
此外,通过网络编码,可以抵抗网络链路和节点的非各态历经失败对网络链接的影响,提高网络链接的鲁棒性,减小网络管理的开销。如果用在无线网络中,还能节省传输能耗,增加传输的安全性等;如果用在P2P文件共享系统中,除了能够显著提高下载效率,还能有效应对节点动态加入和离开、链路失效和网络带宽吞噬等问题。
虽然网络编码优点突出,但运用网络编码增加了计算的复杂性,而且网络节点需要缓存足够的输入信息,因此编码操作增加了传输时延和节点的额外的I/O、CPU消耗。统计数据表明,即使应用最有效的随机网络编码,其编码和译码的时间也不容忽视。此外,应用网络编码还存在同步问题,这主要是由于信宿节点必须等待收到足够的编码信息,才能开始译码。同步问题给在实时系统中应用网络编码提出了挑战。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于空间网络编码的最小权三角剖分方法及装置。
本发明提供一种基于空间网络编码的最小权三角剖分方法,包括:
对最大凸壳点集合S进行逐层计算,得到凸壳顶点Cm;
对凸壳顶点Cm进行环域分割,构成三角形;
对相邻三角形进行调整,获得最大凸壳点集合S的最小权三角剖分。
本发明还提供了一种基于空间网络编码的最小权三角剖分装置,包括:
计算模块,用于对最大凸壳点集合S进行逐层计算,得到凸壳顶点Cm;
分割模块,用于对凸壳顶点Cm进行环域分割,构成三角形;
调整模块,用于对相邻三角形进行调整,获得最大凸壳点集合S的最小权三角剖分。
本发明有益效果如下:
通过对最大凸壳点集合S进行逐层计算后进行环域分割和调整,最终获得最大凸壳点集合S的最小权三角剖分,极大的降低了空间网络编码计算的复杂性,缩短了编码和译码的时间,调高了同步性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是现有技术中Voronoi图的示意图;
图2是现有技术中Voronoi图的直线对偶示意图;
图3a是现有技术中单信源二信宿的蝴蝶网络的传统路由传输方式的示意图;
图3b是现有技术中单信源二信宿的蝴蝶网络的空间网路编码传输方式的示意图;
图4a是现有技术中通信网络的示意图;
图4b是现有技术中基于多播树的路由示意图;
图4c是现有技术中空间网络编码的路由示意图;
图5是本发明实施例的基于空间网络编码的最小权三角剖分方法的流程图;
图6是本发明实施例的三角形示意图;
图7是本发明实施例的基于空间网络编码的最小权三角剖分装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明提供了一种基于空间网络编码的最小权三角剖分方法及装置,首先逐层求凸包,然后分割环域成三角形,最后调整相邻环域的三角剖分便能获得最小权三角剖分。以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
方法实施例
根据本发明的实施例,提供了一种基于空间网络编码的最小权三角剖分方法,图5是本发明实施例的基于空间网络编码的最小权三角剖分方法的流程图,如图5所示,根据本发明实施例的基于空间网络编码的最小权三角剖分方法包括如下处理:
步骤501,对最大凸壳点集合S进行逐层计算,得到凸壳顶点Cm;
步骤501具体包括如下处理:
步骤1,计算最大凸壳点集合S的凸壳顶点,得到凸壳顶点集合C1={p11,p12,…,p1m1},其中,最大凸壳点集合S中包括n个点,n个点的坐标为(Xi,Yi),i=1,2,……n,n为自然数,m1为C1中凸壳顶点的个数;
步骤2,计算集合{S-C1}的凸壳顶点,得到凸壳顶点集合C2={p21,p22,…,p2m2},其中,m2为C2中凸壳顶点的个数;
步骤3,继续计算集合{S-C1-C2}、……、{S-C1-C2-……-Cm-1}的凸壳顶点,直到求得Cm={pm1,pm2,…,pmmm},其中,mm为Cm中凸壳顶点的个数,Cm中不含最大凸壳点集合S中的点,或者,Cm中含有最大凸壳点集合S中的1个点或2个点。
步骤502,对凸壳顶点Cm进行环域分割,构成三角形;
步骤502具体包括如下处理:
步骤4,判断Cm中是否包含最大凸壳点集合S中的点,如果判断为是,则执行步骤6,否则,执行步骤5;
步骤5,判断Cm中包含最大凸壳点集合S中的1个点还是2个点,如果判断为1个点,则执行步骤12,如果判断为2个点,则执行步骤14;
步骤6,计算Cm的直径L(pma,Pmb);
步骤7,如果Cm满足条件1,其中,条件1为:Cm中有mm-1个点共线,且pm1不在该线上,则连接pm1于线上各点,执行步骤15,如果Cm不满足条件1,则执行步骤8;
步骤8,如果Cm满足条件2,其中,条件2为:(pma-1,pma+1<pma,pma+2)∧(pma-1,pma+1<pma,pma-2),则连接点pma-1和点pma+1,删除点pma,输出三角形(pma、pma+1、pma-1),如果Cm不满足条件2,则连接连接点pma与点pma+2或点pma与点pma-2,删除点pma+1或点pma-1,输出三角形(pma+1,pma+2,pma)或输出三角形(pma-1,pma-2,pma);
步骤9,如果Cm满足条件3,其中,条件3为:(pmb-1,pmb+1<pmb,pmb+2)∧(pmb-1,pmb+1<pmb,pmb-2),则连接点pmb-1与点pmb+1,删去点pmb,输出三角形(pmb,pmb+1,pmb-1),执行步骤10,如果不满足条件3,则连接点pmb与点pmb+2或点pmb与点pmb-2,删去点pmb+1或点pmb-1,输出三角形(pmb+1,pmb+2,pmb)或输出三角形(pmb-1,pmb-2,pmb),执行步骤10;
步骤10,计算集合C1m=Cm-{pma,pmb},或C1m=Cm-{pma+1,pmb+1},或C1m=Cm-{pma-1,pmb-1};
步骤11,计算C1m执行L(pma',Pmb'),分别以pma',Pmb'代替pma,Pmb,重复执行步骤7-11,直到分割完毕,执行步骤15;
步骤12,如果Cm中包含最大凸壳点集合S中的1个点p,则将Cm中其他个点与点p连接,并按照连线长度排序dm1、dm2、……,dmmm,其中,dm1(pm1,p)最大;
步骤13,根据长度排序依次以pm1、pm2、……、pmmm为顶点,并当(pma,p)>(pma-1,pma+1),其中,a=1,2,…时,执行步骤7-11对Cm进行分割,直到(pma,p)<(pma-1,pma+1)∧(pmi,p)<(pma,pma+2)∧(pma,p)<(pma-2,pma)为止,执行步骤15,其中,在执行步骤7-11时,不执行有关Pmb的操作;
步骤14,如果Cm中包含最大凸壳点集合S中的2个点p1和点p2,连接点p1和点p2,分别将Cm中位于点p1和点p2连线右侧和左侧的点执行以下操作:将位于右侧或左侧的点设为pm1、Pm2、……、pma,连接p1与pma,p2与pm1,其中,p1与pma、p2与pm1的连线不相交,如果pma在点p1和点p2连线的延长线上,则连接p1与pma或者p2与pma,将点p1、p2、pm1……、pma设置为凸壳,执行步骤7-11对该凸壳进行分割,执行步骤15;
步骤15,将m赋值给i;
步骤16,分割Ci与Ci-1之间的环域:计算Ci-1中位于边(pab,pab+1)右侧或左侧的点链,分别针对右侧或左侧的点链的点链执行以下操作:分别连接边(pab,pab+1)与点链的两个端点,构成凸壳,执行步骤7-11对该凸壳进行分割;
步骤17,将i-1赋值给i,执行步骤16-17,直到i=1,结束操作。
步骤503,对相邻三角形进行调整,获得最大凸壳点集合S的最小权三角剖分。
步骤503具体包括如下处理:
步骤18,对以Cm中的边为公共边的三角形对,执行步骤19,判断是否需要改变原有的三角剖分,再沿Cm-1,…,C1的各条边寻找两个有公共边的三角形对,并执行步骤19判断是否需要改变原来的三角剖分,直至所有凸壳的边检查完后结束操作,获得最大凸壳点集合S的最小权三角剖分;
步骤19,如果p1p2p3与p3p2p4是两个有一条公共边p2p3的三角形,则如果p2p3≤p1p4∨p2p3与p1p4交于两个三角形的外部,则不改变原来的三角剖分,否则,如果p2p3>p1p4∧p2p3与p1p4交于两个三角形的内部,则连接p1与p4,删去线段p2p3。
在本发明实施例中,步骤17还可以继续如下处理:将i-1赋值给i,执行步骤19判断是否需要改变原来的三角剖分后,执行步骤16-17,直到i=1,结束操作。
优选地,执行了步骤103之后,还可以根据最小权三角剖分,计算每个三角形中的费尔马点;连接每个三角形中的费尔马点得到两点之间的最短路径,根据最短路径确定通信网络中中继点到信源点或信宿点之间的最短路由。
也就是说,利用本发明实施例的技术方案,可以确定通信网络中中继点到信源信宿点之间的最短路由。此外,本发明实施例的技术方案将Delaunay三角剖分与费尔马点结合,可以用于任何平面二维欧式空间的最小权三角剖分,适用范围非常广泛,而空间网络编码就是其中的应用领域之一。
以下对本发明实施例的上述技术方案进行详细说明。
设Ai的坐标为(xi,yi),(i=1,2,3……m)点在A(x,y)处,那么全部的总路程S为:
设ei为方向上的单位向量。
若令
则与等价于
可知S的最小值只能在Ai(i=1,2,3……m)(在这些点S不可导)和满足的点去找。
可以证明:若有点A(x,y)满足则S(A)达最小值。
看来很简单,但实际上十分难解。一般可考虑在矩形区域
min{xi}≤x≤max{xi},min{yi}≤y≤max{yi}上用迭代法求数值解,即的近似解。
三角形的费尔马点:要在△A1A2A3所在平面上找一点A,使A到三顶点距离之和最小,即费尔马问题。
显然A点不应在△A1A2A3之外。
(1)当△A1A2A3的内角都小于120°时,由上述即得:
e1+e2+e3=0
对e1+e2+e3=0两边分别点乘e1、e2、e3,得到下面方程组
解得:即
此时,满足的A点必唯一存在,并称为费尔马点。S=AA1+AA2+AA3小于△A1A2A3任意两边边长之和,此结论若应用于电缆或管道的铺设工作中,则可节省材料。
(2)当△A1A2A3的最大内角≥120°时可设想:原来△A1A2A3最大内角<120°则由(1)可知使S最小的A点在△内出现,保持A1A2与A1A3的长度不变。让∠A2A1A3逐渐张大,则点A趋于点A1,如图6所示,
当θ=120°时,点A与点A1重合。显然点A不可能在△A1A2A3之外,从而即使θ继续扩大仍然点A与点A1重合。
以下对本发明实施例的图1所示的处理流程进行详细说明。
输入:平面上n个点的坐标(xi,yi),i=1,n,该点集记为S。
输出:n个点的三角剖分链表L=(p1,p2,pi)→(p2,pi,pj)→…→(pn-2,pn-1,pn)。
步骤1,求n个点的凸壳顶点,设为C1={p11,p12,…,p1m1}。求{S-C1}的凸壳顶点,设为C2={p21,p22,…,p2m2}。继续下去,直至求得Cm={pm1,pm2,…,pmmm}。Cm内不含S中的点、包含S中的1个点或2个点,分别转步骤2、6和8。
步骤2,求Cm的直径,设l(pmi,pmj)是Cm的直径。
步骤3,if Cm中有mm-1个点共线(pm1不在线上)
then连接pm1与线上各点,转步骤9。
else if(pmi-1pmi+1<pmipmi+2)∧(pmi-1pmi+1<pmipmi-2)
then连接pmi-1与pmi+1,删去点pmi,输出(pmi,pmi+1,pmi-1)。
else连接pmi与pmi+2(或pmi与pmi-2),删去点pmi+1(或点pmi-1),
输出(pmi+1,pmi+2,pmi)或输出(pmi-1,pmi-2,pmi)。
if(pmj-1pmj+1<pmjpmj+2)∧(pmj-1pmj+1<pmjpmj-)
then连接pmj-1与pmj+1,删去点pmj,输出(pmj,pmj+1,pmj-1)。
else连接pmj与pmj+2(或pmj与pmj-2),删去点pmj+1(或点pmj-1),
输出(pmj+1,pmj+2,pmj)或输出(pmj-1,pmj-2,pmj)。
步骤4,Cm-{pmi,pmj}(或Cm-{pmi+1,pmj+1},Cm-{pmi-1,pmj-1}),记为C1m。
步骤5,求C1m的直径,设l(pmi′,pmj′)是C1m的直径,分别以pmi′、pmj′代替pmi、pmj,重复步骤3、4、5,直至分割完毕,转步骤9。
步骤6,设Cm内含1个点p。Cm各顶点与p连接,并按连线长度排序dm1,dm2,…,dmmm,其中dm1(pm1,p)最大。
步骤7,依次以pm1,pm2,…为顶点,并当pmip>pmi-1pmi+1(i=1,2,…)时,用步骤3至步骤5(步骤5改为求Cm的剩余顶点与p的最大距离)的方法(此时不考虑j)进行分割,直至pmip<pmi-1pmi+1∧pmip<pmipmi+2∧pmip<pmi-2pmi为止,转步骤9。
步骤8,设Cm内含两个点p1,p2,连接p1与p2。Cm中位于p1p2右侧的点,设为pm1,pm2,…,pmi,连接p1与pmi,p2与pm1(p1pmi与p2pm1不相交)。p1p2pm1…pmi成一凸壳,用步骤2至步骤5的方法分割该凸壳。
if pmi在p1p2的延长线上
then连接p1与pmi(或p2与pmi)
同样处理Cm中位于p1p2左侧的点,转步骤9。
步骤9,i←m
步骤10,分割Ci与Ci-1之间的环域。
求Ci-1中位于边pijpij+1右侧的点链(逆时针方向),分别连接边pijpij+1与链的两个端点,构成凸壳,用步骤2至步骤5的方法分割该凸壳。
同样方法处理环域的其它区域。
步骤11,i←i-1,转步骤10,直至i=1,转步骤13。
步骤12,设p1p2p3与p3p2p4是两个有一条公共边p2p3的三角形。
if p2p3≤p1p4∨p2p3与p1p4交于两个三角形的外部
then不改变原来的三角剖分
else if p2p3>p1p4∧p2p3与p1p4交于两个三角形的内部
then连接p1与p4,删去线段p2p3。
步骤13,对以Cm中的边(或已变动的边)为公共边的三角形对,用步骤12的方法检查
是否需要改变原有的三角剖分。然后,沿Cm-1,…,C2的各条边(或已变动的边)寻找两个有公共边的三角形对,并用步骤12的方法检查是否需要改变原来的三角剖分,直至所有凸壳的边检查完后终止。
Delaunay三角剖分与费尔马点结合后形成的方法可以用于任何平面二维欧式空间的最小权三角剖分,适用范围是非常广泛的,这个空间网络编码就是其中的应用领域之一。
方法正确性证明与复杂性分析:
引理1:设p是三角形ABC内(或边BC上)的一点,则三角形ABC内存在唯一的三
角剖分(亦是最小权三角剖分),即连接AP、BP与CP(或连接AP).
引理2:设ABCD是任意四边形,连接距离较小的顶点对便得到四边形ABCD内的
最小权三角剖分:
引理3:任意凸多边形的直径的端点只能形成三个权值较小的三角剖分.
证明:由于是凸多边形,并且直径p0p4的长度最长,所以长度|p0p1|、
|p0p2|、|p0p3|、|p0p4|是递增序列,而|p0p4|、|p0p5|、|p0p6|、|p0p7|是递减序列.在该两个序列中,|p0p2|与|p0p6|分别是长度最短的连线.因此只要比较|p1p7|、|p0p2|与|p0p6|的长度,找出最小者,便可得到含点p0的最小权三角剖分。证毕。
引理4:对Ci的边pi1pi2执行步骤13至多(a+1)次即可求得Ci+1与Ci、Ci与Ci-1之间环域中pi1pi2段域的最小权三角剖分.其中a为pi1pi2段域中Ci+1、Ci-1顶点数之和.
证明:对边pi1pi2首次执行步骤13,即连接pi-12与pi+12,删去pi1pi2;第2次执行步骤13,即连接pi-12与pi+13,删去pi+12pi2;第3次执行步骤13,即连接pi+12与pi-11,删去pi1pi-12;第4次执行步骤13,即连接pi+13与pi-13,删去pi-12pi2.此时a=3,执行4次步骤13便将pi1pi2段域(Ci+1中pi+11至pi+15、Ci-1中pi-11至pi-13的边围成的域)进行了最小权三角剖分.对Ci的其它边所对应的段域类似处理,就可完成相邻环域的最小权三角剖分.如果点集在平面上呈均匀分布,则可以估计每层凸包的顶点数及a的大小,a是依赖于n、m但并不太大的一个数。
定理:给定n个点的平面点集S,正确地将S三角剖分,而且得到最小权三角剖。
本发明实施例的技术方案所需要的乘法次数是O(n4/m3),比较次数是O(n4/m3),其中m为点集凸壳的层数。
证明:显然,本发明实施例的技术方案正确地将S三角剖分。
步骤1是分割点集凸壳内的区域成嵌套的环形域,其中Cm是最内层的区域.
Cm内可能不含S中的点、包含S中的1个点或2个点,但不可能包含S中的3个点.因为如果包含S中的3个点,则本发明实施例的技术方案可以再求一次凸壳,得到Cm+1。本发明实施例的技术方案的步骤2至步骤5,步骤6至步骤7与步骤8分别处理上述三种情况。其基本方法都是用最短连线从Cm中分割出三角形,由引理1、引理2及引理3,Cm内的三角剖分是最小权三角剖分.各环形域的三角剖分亦同样进行(步骤9至步骤11),因此诸环形域的三角剖分是最小权三角剖分。步骤13是为解决Cm内的三角剖分及其与相邻环形域三角剖分之间以及相邻环形域三角剖分之间的非最小权问题而设计的。由引理2、引理3与引理4,本发明实施例的技术方案终止时,可以得到最小权三角剖分。
步骤1的第1次求凸壳需要O(nlogn)次比较和O(n)次乘法。第2次至第m次求凸壳所需比较次数和乘法次数均小于O(nlogn)和O(n).因此步骤1的复杂性不超过O(mnlogn)次比较和O(mn)次乘法。
步骤2要进行1/2(mm-1)mm次求距离(两点间的距离)运算,每次求距离需要2次乘法(因为是比较距离的长短,所以可以比较距离的平方值,从而省去开方运算),所以步骤2耗费(mm-1)mm次乘法和1/2(mm-1)mm-1次比较求得Cm的直径.设点集S有m层凸壳,各层凸壳均含n/m个点,则步骤2需要(n/m-1)n/m次乘法和1/2(n/m-1)n/m-1次比较。
步骤3和步骤4只需要常数时间.第1次执行步骤5需要(mm-3)(mm-2)次乘法(即(n/m-3)(n/m-2)次乘法)和1/2(mm-3)(mm-2)-1次比较(即1/2(n/m-3)(n/m-2)-1次比较)便可求得C1m的直径.如果步骤3至步骤5的每次循环均减少2个点,则此循环次数为1/2(n/m-3),即n-3m2m.因此,步骤3至步骤5的耗费不超过n-3m2m(n/m-3)(n/m-2)次乘法和n-3m2m[1/2(n/m-3)(n/m-2)-1]次比较。
步骤6耗费2n/m次乘法和O(n/mlogn/m)次比较可以排序n/m个元素.步骤7对n/m条连线逐条处理,处理一条连线需要求三次点与点的距离,即6次乘法,另外再用2次比较便可确定一个三角形.因此步骤7需要6n/m次乘法及2n/m次比较。
步骤8用1/2n/m次乘法可以判定Cm中哪些点位于p1p2的右侧,然后用(n/m-1)2n/m+n-3mm(n/m-3)(n/m-2)次乘法和(n/m-1)n/m-1+n-3mm[1/2(n/m-3)(n/m-2)-1]次比较完成Cm内的三角剖分。
步骤9至步骤11的耗费为步骤8的耗费的n/m×m=n倍,即耗费1/2n2m+(n/m-1)n2m+n-3m2m(n/m-3)(n/m-2)n次乘法和n2(n/m-1)n/m-1+(n-3m)n2m[1/2(n/m-3)(n/m-2)-1]次比较可以完成各环形域的三角剖分。
步骤13是为求得相邻环域最小权三角剖分而设计的,沿Ci(i=2,3,…,m)的各条边(或已变动的边)进行检查.对每条边要求2次距离(即4次乘法)和一次比较,便可判定以该边为公共边的两个三角形是否需要改变分割方式.由引理4,处理一条公共边执行步骤13至多(a+1)次,即求2(a+1)次距离(或4(a+1)次乘法)和(a+1)次比较,而C2,C3,…,Cm的边数之和小于n,因此重复执行步骤13至多需要4(a+1)n<4n2次乘法和(a+n<n2次比较即可完成相邻环域三角剖分的最小权化。
总之所需要的乘法次数是:
比较次数为:
由于平面上n个点的任意三角剖分至多有3n-6条边,而本发明实施例的技术方案又求得了点集的最小权三角剖分,因此至多只要进行3n-7次比较便可求得点集中的最近点对,即求最近点对的复杂性为O(n).另外通过O((3n-6)log(3n-6))次比较可以排序点集中某些点对间的距离,对此排序的距离集合,再利用最小生成树方法,可以求得该点集的最小生成树.进而对三角剖分中的每个三角形,作各边的中垂线,即可构造给定点集S的Voronoi图等,具有非常好的扩展性。
装置实施例
根据本发明的实施例,提供了一种基于空间网络编码的最小权三角剖分装置,图7是本发明实施例的基于空间网络编码的最小权三角剖分装置的结构示意图,如图7所示,根据本发明实施例的基于空间网络编码的最小权三角剖分装置包括:计算模块70、分割模块72、以及调整模块74,以下对本发明实施例的各个模块进行详细的说明。
计算模块70,用于对最大凸壳点集合S进行逐层计算,得到凸壳顶点Cm;计算模块70具体包括:
第一计算子模块,用于计算最大凸壳点集合S的凸壳顶点,得到凸壳顶点集合C1={p11,p12,…,p1m1},其中,最大凸壳点集合S中包括n个点,n个点的坐标为(Xi,Yi),i=1,2,……n,n为自然数,m1为C1中凸壳顶点的个数;
第二计算子模块,用于计算集合{S-C1}的凸壳顶点,得到凸壳顶点集合C2={p21,p22,…,p2m2},其中,m2为C2中凸壳顶点的个数;
第三计算子模块,用于继续计算集合{S-C1-C2}、……、{S-C1-C2-……-Cm-1}的凸壳顶点,直到求得Cm={pm1,pm2,…,pmmm},其中,mm为Cm中凸壳顶点的个数,Cm中不含最大凸壳点集合S中的点,或者,Cm中含有最大凸壳点集合S中的1个点或2个点。
分割模块72,用于对凸壳顶点Cm进行环域分割,构成三角形;分割模块72具体包括:
第一判断子模块,判断Cm中是否包含最大凸壳点集合S中的点,如果判断为是,则调用第四计算子模块,否则,调用第二判断子模块;
第二判断子模块,用于判断Cm中包含最大凸壳点集合S中的1个点还是2个点,如果判断为1个点,则调用第四连接子模块,如果判断为2个点,则调用第二分割子模块;
第四计算子模块,用于计算Cm的直径L(pma,Pmb);
第一连接子模块,用于如果Cm满足条件1,其中,条件1为:Cm中有mm-1个点共线,且pm1不在该线上,则连接pm1于线上各点,调用第一赋值子模块,如果Cm不满足条件1,则调用第二连接子模块;
第二连接子模块,用于如果Cm满足条件2,其中,条件2为:(pma-1,pma+1<pma,pma+2)∧(pma-1,pma+1<pma,pma-2),则连接点pma-1和点pma+1,删除点pma,输出三角形(pma、pma+1、pma-1),如果Cm不满足条件2,则连接连接点pma与点pma+2或点pma与点pma-2,删除点pma+1或点pma-1,输出三角形(pma+1,pma+2,pma)或输出三角形(pma-1,pma-2,pma);
第三连接子模块,用于如果Cm满足条件3,其中,条件3为:(pmb-1,pmb+1<pmb,pmb+2)∧(pmb-1,pmb+1<pmb,pmb-2),则连接点pmb-1与点pmb+1,删去点pmb,输出三角形(pmb,pmb+1,pmb-1),调用第五计算子模块,如果不满足条件3,则连接点pmb与点pmb+2或点pmb与点pmb-2,删去点pmb+1或点pmb-1,输出三角形(pmb+1,pmb+2,pmb)或输出三角形(pmb-1,pmb-2,pmb),调用第五计算子模块;
第五计算子模块,用于计算集合C1m=Cm-{pma,pmb},或C1m=Cm-{pma+1,pmb+1},或C1m=Cm-{pma-1,pmb-1};
第六计算子模块,用于计算C1m执行L(pma',Pmb'),分别以pma',Pmb'代替pma,Pmb,重复调用第一连接子模块、第二连接子模块、第三连接子模块、第五计算子模块、以及第六计算子模块,直到分割完毕,调用第一赋值子模块;
第四连接子模块,用于如果Cm中包含最大凸壳点集合S中的1个点p,则将Cm中其他个点与点p连接,并按照连线长度排序dm1、dm2、……,dmmm,其中,dm1(pm1,p)最大;
第一分割子模块,用于根据长度排序依次以pm1、pm2、……、pmmm为顶点,并当(pma,p)>(pma-1,pma+1),其中,a=1,2,…时,调用第一连接子模块、第二连接子模块、第三连接子模块、第五计算子模块、以及第六计算子模块对Cm进行分割,直到(pma,p)<(pma-1,pma+1)∧(pmi,p)<(pma,pma+2)∧(pma,p)<(pma-2,pma)为止,调用第一赋值子模块,其中,在调用第一连接子模块、第二连接子模块、第三连接子模块、第五计算子模块、以及第六计算子模块时,禁止上述模块执行有关Pmb的操作;
第二分割子模块,用于如果Cm中包含最大凸壳点集合S中的2个点p1和点p2,连接点p1和点p2,分别将Cm中位于点p1和点p2连线右侧和左侧的点执行以下操作:将位于右侧或左侧的点设为pm1、Pm2、……、pma,连接p1与pma,p2与pm1,其中,p1与pma、p2与pm1的连线不相交,如果pma在点p1和点p2连线的延长线上,则连接p1与pma或者p2与pma,将点p1、p2、pm1……、pma设置为凸壳,调用第一连接子模块、第二连接子模块、第三连接子模块、第五计算子模块、以及第六计算子模块对该凸壳进行分割,调用第一赋值子模块;
第一赋值子模块,用于将m赋值给i;
第三分割子模块,用于分割Ci与Ci-1之间的环域:计算Ci-1中位于边(pab,pab+1)右侧或左侧的点链,分别针对右侧或左侧的点链的点链执行以下操作:分别连接边(pab,pab+1)与点链的两个端点,构成凸壳,调用第一连接子模块、第二连接子模块、第三连接子模块、第五计算子模块、以及第六计算子模块对该凸壳进行分割;
第二赋值子模块,用于将i-1赋值给i,调用第三分割子模块和第二赋值子模块,直到i=1,结束操作。
调整模块74,用于对相邻三角形进行调整,获得最大凸壳点集合S的最小权三角剖分。调整模块74具体包括:
检查子模块,用于对以Cm中的边为公共边的三角形对,调用处理子模块,判断是否需要改变原有的三角剖分,再沿Cm-1,…,C1的各条边寻找两个有公共边的三角形对,并调用处理子模块判断是否需要改变原来的三角剖分,直至所有凸壳的边检查完后结束操作,获得最大凸壳点集合S的最小权三角剖分;
处理子模块,用于如果p1p2p3与p3p2p4是两个有一条公共边p2p3的三角形,则如果p2p3≤p1p4∨p2p3与p1p4交于两个三角形的外部,则不改变原来的三角剖分,否则,如果p2p3>p1p4∧p2p3与p1p4交于两个三角形的内部,则连接p1与p4,删去线段p2p3。
优选地,第二赋值子模块具体用于:将i-1赋值给i,调用处理子模块判断是否需要改变原来的三角剖分后,调用第三分割子模块和第二赋值子模块,直到i=1,结束操作。
优选地,上述装置进一步包括:
最短路径模块,用于根据最小权三角剖分,计算每个三角形中的费尔马点;连接每个三角形中的费尔马点得到两点之间的最短路径,根据最短路径确定通信网络中中继点到信源点或信宿点之间的最短路由。
综上所述,借助于本发明实施例的技术方案,通过对最大凸壳点集合S进行逐层计算后进行环域分割和调整,最终获得最大凸壳点集合S的最小权三角剖分,极大的降低了空间网络编码计算的复杂性,缩短了编码和译码的时间,调高了同步性。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的客户端中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个客户端中。可以把实施例中的模块组合成一个模块,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者客户端的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的加载有排序网址的客户端中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (12)
1.一种基于空间网络编码的最小权三角剖分方法,其特征在于,包括:
对最大凸壳点集合S进行逐层计算,得到凸壳顶点Cm;
对所述凸壳顶点Cm进行环域分割,构成三角形;
对相邻三角形进行调整,获得最大凸壳点集合S的最小权三角剖分。
2.如权利要求1所述的方法,其特征在于,所述方法进一步包括:
根据所述最小权三角剖分,计算每个三角形中的费尔马点;
连接每个三角形中的费尔马点得到两点之间的最短路径,根据所述最短路径确定通信网络中中继点到信源点或信宿点之间的最短路由。
3.如权利要求1所述的方法,其特征在于,对最大凸壳点集合S进行逐层计算,得到凸壳顶点Cm具体包括:
步骤1,计算最大凸壳点集合S的凸壳顶点,得到凸壳顶点集合C1={p11,p12,…,p1m1},其中,最大凸壳点集合S中包括n个点,n个点的坐标为(Xi,Yi),i=1,2,……n,n为自然数,m1为C1中凸壳顶点的个数;
步骤2,计算集合{S-C1}的凸壳顶点,得到凸壳顶点集合C2={p21,p22,…,p2m2},其中,m2为C2中凸壳顶点的个数;
步骤3,继续计算集合{S-C1-C2}、……、{S-C1-C2-……-Cm-1}的凸壳顶点,直到求得Cm={pm1,pm2,…,pmmm},其中,mm为Cm中凸壳顶点的个数,Cm中不含最大凸壳点集合S中的点,或者,Cm中含有最大凸壳点集合S中的1个点或2个点。
4.如权利要求3所述的方法,其特征在于,对所述凸壳顶点Cm进行环域分割,构成三角形具体包括:
步骤4,判断Cm中是否包含最大凸壳点集合S中的点,如果判断为是,则执行步骤6,否则,执行步骤5;
步骤5,判断Cm中包含最大凸壳点集合S中的1个点还是2个点,如果判断为1个点,则执行步骤12,如果判断为2个点,则执行步骤14;
步骤6,计算Cm的直径L(pma,Pmb);
步骤7,如果Cm满足条件1,其中,条件1为:Cm中有mm-1个点共线,且pm1不在该线上,则连接pm1于线上各点,执行步骤15,如果Cm不满足条件1,则执行步骤8;
步骤8,如果Cm满足条件2,其中,条件2为:(pma-1,pma+1<pma,pma+2)∧(pma-1,pma+1<pma,pma-2),则连接点pma-1和点pma+1,删除点pma,输出三角形(pma、pma+1、pma-1),如果Cm不满足条件2,则连接连接点pma与点pma+2或点pma与点pma-2,删除点pma+1或点pma-1,输出三角形(pma+1,pma+2,pma)或输出三角形(pma-1,pma-2,pma);
步骤9,如果Cm满足条件3,其中,条件3为:(pmb-1,pmb+1<pmb,pmb+2)∧(pmb-1,pmb+1<pmb,pmb-2),则连接点pmb-1与点pmb+1,删去点pmb,输出三角形(pmb,pmb+1,pmb-1),执行步骤10,如果不满足条件3,则连接点pmb与点pmb+2或点pmb与点pmb-2,删去点pmb+1或点pmb-1,输出三角形(pmb+1,pmb+2,pmb)或输出三角形(pmb-1,pmb-2,pmb),执行步骤10;
步骤10,计算集合C1m=Cm-{pma,pmb},或C1m=Cm-{pma+1,pmb+1},或C1m=Cm-{pma-1,pmb-1};
步骤11,计算C1m执行L(pma',Pmb'),分别以pma',Pmb'代替pma,Pmb,重复执行步骤7-11,直到分割完毕,执行步骤15;
步骤12,如果Cm中包含最大凸壳点集合S中的1个点p,则将Cm中其他个点与点p连接,并按照连线长度排序dm1、dm2、……,dmmm,其中,dm1(pm1,p)最大;
步骤13,根据所述长度排序依次以pm1、pm2、……、pmmm为顶点,并当(pma,p)>(pma-1,pma+1),其中,a=1,2,…时,执行步骤7-11对Cm进行分割,直到(pma,p)<(pma-1,pma+1)∧(pmi,p)<(pma,pma+2)∧(pma,p)<(pma-2,pma)为止,执行步骤15,其中,在执行步骤7-11时,不执行有关Pmb的操作;
步骤14,如果Cm中包含最大凸壳点集合S中的2个点p1和点p2,连接点p1和点p2,分别将Cm中位于点p1和点p2连线右侧和左侧的点执行以下操作:将位于右侧或左侧的点设为pm1、Pm2、……、pma,连接p1与pma,p2与pm1,其中,p1与pma、p2与pm1的连线不相交,如果pma在点p1和点p2连线的延长线上,则连接p1与pma或者p2与pma,将点p1、p2、pm1……、pma设置为凸壳,执行步骤7-11对该凸壳进行分割,执行步骤15;
步骤15,将m赋值给i;
步骤16,分割Ci与Ci-1之间的环域:计算Ci-1中位于边(pab,pab+1)右侧或左侧的点链,分别针对右侧或左侧的点链的点链执行以下操作:分别连接边(pab,pab+1)与所述点链的两个端点,构成凸壳,执行步骤7-11对该凸壳进行分割;
步骤17,将i-1赋值给i,执行步骤16-17,直到i=1,结束操作。
5.如权利要求4所述的方法,其特征在于,对相邻三角形进行调整,获得最大凸壳点集合S的最小权三角剖分具体包括:
步骤18,对以Cm中的边为公共边的三角形对,执行步骤19,判断是否需要改变原有的三角剖分,再沿Cm-1,…,C1的各条边寻找两个有公共边的三角形对,并执行步骤19判断是否需要改变原来的三角剖分,直至所有凸壳的边检查完后结束操作,获得最大凸壳点集合S的最小权三角剖分;
步骤19,如果p1p2p3与p3p2p4是两个有一条公共边p2p3的三角形,则如果p2p3≤p1p4∨p2p3与p1p4交于两个三角形的外部,则不改变原来的三角剖分,否则,如果p2p3>p1p4∧p2p3与p1p4交于两个三角形的内部,则连接p1与p4,删去线段p2p3。
6.如权利要求5所述的方法,其特征在于,所述步骤17具体包括:
将i-1赋值给i,执行步骤19判断是否需要改变原来的三角剖分后,执行步骤16-17,直到i=1,结束操作。
7.一种基于空间网络编码的最小权三角剖分装置,其特征在于,包括:
计算模块,用于对最大凸壳点集合S进行逐层计算,得到凸壳顶点Cm;
分割模块,用于对所述凸壳顶点Cm进行环域分割,构成三角形;
调整模块,用于对相邻三角形进行调整,获得最大凸壳点集合S的最小权三角剖分。
8.如权利要求7所述的装置,其特征在于,所述装置进一步包括:
最短路径模块,用于根据所述最小权三角剖分,计算每个三角形中的费尔马点;连接每个三角形中的费尔马点得到两点之间的最短路径,根据所述最短路径确定通信网络中中继点到信源点或信宿点之间的最短路由。
9.如权利要求7所述的装置,其特征在于,所述计算模块具体包括:
第一计算子模块,用于计算最大凸壳点集合S的凸壳顶点,得到凸壳顶点集合C1={p11,p12,…,p1m1},其中,最大凸壳点集合S中包括n个点,n个点的坐标为(Xi,Yi),i=1,2,……n,n为自然数,m1为C1中凸壳顶点的个数;
第二计算子模块,用于计算集合{S-C1}的凸壳顶点,得到凸壳顶点集合C2={p21,p22,…,p2m2},其中,m2为C2中凸壳顶点的个数;
第三计算子模块,用于继续计算集合{S-C1-C2}、……、{S-C1-C2-……-Cm-1}的凸壳顶点,直到求得Cm={pm1,pm2,…,pmmm},其中,mm为Cm中凸壳顶点的个数,Cm中不含最大凸壳点集合S中的点,或者,Cm中含有最大凸壳点集合S中的1个点或2个点。
10.如权利要求9所述的装置,其特征在于,所述分割模块具体包括:
第一判断子模块,判断Cm中是否包含最大凸壳点集合S中的点,如果判断为是,则调用第四计算子模块,否则,调用第二判断子模块;
第二判断子模块,用于判断Cm中包含最大凸壳点集合S中的1个点还是2个点,如果判断为1个点,则调用第四连接子模块,如果判断为2个点,则调用第二分割子模块;
第四计算子模块,用于计算Cm的直径L(pma,Pmb);
第一连接子模块,用于如果Cm满足条件1,其中,条件1为:Cm中有mm-1个点共线,且pm1不在该线上,则连接pm1于线上各点,调用第一赋值子模块,如果Cm不满足条件1,则调用第二连接子模块;
第二连接子模块,用于如果Cm满足条件2,其中,条件2为:(pma-1,pma+1<pma,pma+2)∧(pma-1,pma+1<pma,pma-2),则连接点pma-1和点pma+1,删除点pma,输出三角形(pma、pma+1、pma-1),如果Cm不满足条件2,则连接连接点pma与点pma+2或点pma与点pma-2,删除点pma+1或点pma-1,输出三角形(pma+1,pma+2,pma)或输出三角形(pma-1,pma-2,pma);
第三连接子模块,用于如果Cm满足条件3,其中,条件3为:(pmb-1,pmb+1<pmb,pmb+2)∧(pmb-1,pmb+1<pmb,pmb-2),则连接点pmb-1与点pmb+1,删去点pmb,输出三角形(pmb,pmb+1,pmb-1),调用第五计算子模块,如果不满足条件3,则连接点pmb与点pmb+2或点pmb与点pmb-2,删去点pmb+1或点pmb-1,输出三角形(pmb+1,pmb+2,pmb)或输出三角形(pmb-1,pmb-2,pmb),调用第五计算子模块;
第五计算子模块,用于计算集合C1m=Cm-{pma,pmb},或C1m=Cm-{pma+1,pmb+1},或C1m=Cm-{pma-1,pmb-1};
第六计算子模块,用于计算C1m执行L(pma',Pmb'),分别以pma',Pmb'代替pma,Pmb,重复调用第一连接子模块、第二连接子模块、第三连接子模块、第五计算子模块、以及第六计算子模块,直到分割完毕,调用第一赋值子模块;
第四连接子模块,用于如果Cm中包含最大凸壳点集合S中的1个点p,则将Cm中其他个点与点p连接,并按照连线长度排序dm1、dm2、……,dmmm,其中,dm1(pm1,p)最大;
第一分割子模块,用于根据所述长度排序依次以pm1、pm2、……、pmmm为顶点,并当(pma,p)>(pma-1,pma+1),其中,a=1,2,…时,调用第一连接子模块、第二连接子模块、第三连接子模块、第五计算子模块、以及第六计算子模块对Cm进行分割,直到(pma,p)<(pma-1,pma+1)∧(pmi,p)<(pma,pma+2)∧(pma,p)<(pma-2,pma)为止,调用第一赋值子模块,其中,在调用第一连接子模块、第二连接子模块、第三连接子模块、第五计算子模块、以及第六计算子模块时,禁止上述模块执行有关Pmb的操作;
第二分割子模块,用于如果Cm中包含最大凸壳点集合S中的2个点p1和点p2,连接点p1和点p2,分别将Cm中位于点p1和点p2连线右侧和左侧的点执行以下操作:将位于右侧或左侧的点设为pm1、Pm2、……、pma,连接p1与pma,p2与pm1,其中,p1与pma、p2与pm1的连线不相交,如果pma在点p1和点p2连线的延长线上,则连接p1与pma或者p2与pma,将点p1、p2、pm1……、pma设置为凸壳,调用第一连接子模块、第二连接子模块、第三连接子模块、第五计算子模块、以及第六计算子模块对该凸壳进行分割,调用第一赋值子模块;
第一赋值子模块,用于将m赋值给i;
第三分割子模块,用于分割Ci与Ci-1之间的环域:计算Ci-1中位于边(pab,pab+1)右侧或左侧的点链,分别针对右侧或左侧的点链的点链执行以下操作:分别连接边(pab,pab+1)与所述点链的两个端点,构成凸壳,调用第一连接子模块、第二连接子模块、第三连接子模块、第五计算子模块、以及第六计算子模块对该凸壳进行分割;
第二赋值子模块,用于将i-1赋值给i,调用第三分割子模块和第二赋值子模块,直到i=1,结束操作。
11.如权利要求10所述的装置,其特征在于,所述调整模块具体包括:
检查子模块,用于对以Cm中的边为公共边的三角形对,调用处理子模块,判断是否需要改变原有的三角剖分,再沿Cm-1,…,C1的各条边寻找两个有公共边的三角形对,并调用处理子模块判断是否需要改变原来的三角剖分,直至所有凸壳的边检查完后结束操作,获得最大凸壳点集合S的最小权三角剖分;
处理子模块,用于如果p1p2p3与p3p2p4是两个有一条公共边p2p3的三角形,则如果p2p3≤p1p4∨p2p3与p1p4交于两个三角形的外部,则不改变原来的三角剖分,否则,如果p2p3>p1p4∧p2p3与p1p4交于两个三角形的内部,则连接p1与p4,删去线段p2p3。
12.如权利要求11所述的装置,其特征在于,所述第二赋值子模块具体用于:
将i-1赋值给i,调用处理子模块判断是否需要改变原来的三角剖分后,调用第三分割子模块和第二赋值子模块,直到i=1,结束操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610237784.9A CN105933091B (zh) | 2016-04-18 | 2016-04-18 | 基于空间网络编码的最小权三角剖分方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610237784.9A CN105933091B (zh) | 2016-04-18 | 2016-04-18 | 基于空间网络编码的最小权三角剖分方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105933091A true CN105933091A (zh) | 2016-09-07 |
CN105933091B CN105933091B (zh) | 2019-11-08 |
Family
ID=56839226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610237784.9A Active CN105933091B (zh) | 2016-04-18 | 2016-04-18 | 基于空间网络编码的最小权三角剖分方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105933091B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106685592A (zh) * | 2016-12-26 | 2017-05-17 | 华中科技大学 | 一种采用三维空间网络编码的网络传输方法 |
CN110781958A (zh) * | 2019-10-25 | 2020-02-11 | 福州大学 | 基于最大生成树和最优图分割的od流向聚类方法 |
CN111294809A (zh) * | 2018-12-06 | 2020-06-16 | 中国移动通信集团海南有限公司 | 问题集中区域识别的方法、装置、设备和介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848229A (zh) * | 2009-03-24 | 2010-09-29 | 北京理工大学 | 一种解决分布式网络计算中最小生成网络问题的方法 |
CN104836637A (zh) * | 2015-03-26 | 2015-08-12 | 青岛海尔智能家电科技有限公司 | 一种空间网络编码的最小权三角剖分方法及装置 |
-
2016
- 2016-04-18 CN CN201610237784.9A patent/CN105933091B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848229A (zh) * | 2009-03-24 | 2010-09-29 | 北京理工大学 | 一种解决分布式网络计算中最小生成网络问题的方法 |
CN104836637A (zh) * | 2015-03-26 | 2015-08-12 | 青岛海尔智能家电科技有限公司 | 一种空间网络编码的最小权三角剖分方法及装置 |
Non-Patent Citations (1)
Title |
---|
周培德: ""平面点集三角剖分的算法"", 《计算机辅助设计与图形学学报》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106685592A (zh) * | 2016-12-26 | 2017-05-17 | 华中科技大学 | 一种采用三维空间网络编码的网络传输方法 |
CN111294809A (zh) * | 2018-12-06 | 2020-06-16 | 中国移动通信集团海南有限公司 | 问题集中区域识别的方法、装置、设备和介质 |
CN111294809B (zh) * | 2018-12-06 | 2023-04-28 | 中国移动通信集团海南有限公司 | 问题集中区域识别的方法、装置、设备和介质 |
CN110781958A (zh) * | 2019-10-25 | 2020-02-11 | 福州大学 | 基于最大生成树和最优图分割的od流向聚类方法 |
CN110781958B (zh) * | 2019-10-25 | 2022-06-17 | 福州大学 | 基于最大生成树和最优图分割的od流向聚类方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105933091B (zh) | 2019-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5905507A (en) | Compression of geometric models using spanning trees | |
KR100233972B1 (ko) | 기하학적 모델을 압축 및 압축해제하는 컴퓨터 시스템과 압축 및압축해제 | |
Yao et al. | Improved ant colony optimization for seafood product delivery routing problem | |
CN105933091A (zh) | 基于空间网络编码的最小权三角剖分方法及装置 | |
JP2017509043A (ja) | グラフデータクエリ方法および装置 | |
CN112985443B (zh) | 路径规划方法、装置及终端设备 | |
CN106685745A (zh) | 一种网络拓扑构建方法及装置 | |
CN109919532A (zh) | 一种物流节点确定方法及装置 | |
Du et al. | GAQ-EBkSP: a DRL-based urban traffic dynamic rerouting framework using fog-cloud architecture | |
CN109739433A (zh) | 数据处理的方法及终端设备 | |
CN113709754A (zh) | 基于聚类算法的无线宽带通信系统布站组网方法及系统 | |
CN109214656A (zh) | 一种用于城市公交网络的节点重要性评估方法 | |
CN110765319A (zh) | 一种提高Janusgraph路径探索性能的方法 | |
CN106681795B (zh) | 节点局部拓扑和可利用资源容量的虚拟网络映射方法 | |
CN110503234A (zh) | 一种物流运输调度的方法、系统及设备 | |
CN112738225B (zh) | 基于人工智能的边缘计算方法 | |
CN104836637B (zh) | 一种空间网络编码的最小权三角剖分方法及装置 | |
CN109523634A (zh) | 优化网格的方法及装置 | |
Guan et al. | Multidimensional Resource Fragmentation-Aware Virtual Network Embedding for IoT Applications in MEC Networks | |
CN110351189B (zh) | 面向实时边缘计算的路由控制方法 | |
CN113722554A (zh) | 数据分类方法、装置及计算设备 | |
CN107180281A (zh) | 一种电动汽车的路径规划优化方法、装置及设备 | |
CN105337702A (zh) | 一种采用基于Delaunay三角剖分的空间网络编码的网络传输方法 | |
CN113824802B (zh) | 一种去中心化分布式训练拓扑结构、训练系统及方法 | |
CN107273207A (zh) | 一种基于超图划分算法的相关数据存储方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |