发明名称 一种解决分布式网络计算中最小生成网络问题的方法
摘要 本发明公开了一种解决分布式网络计算中最小生成网络问题的方法,用于解决分布式网络计算中最小生成网络的问题,属于计算机应用技术领域。本发明首先描述最小生成网络问题,证明了该问题是“NP-难问题”。先由点集S2及拓扑关系构造网络G3,然后将G3嵌入点集S1,并在此基础上满足边长之和最小的要求。通过采用本发明提出的求解分布式网络计算中的最小生成网络问题的方法,准确性高,使分布式网络中数据的传递速度提高,降低时间成本,提高了数据传输的效率。
申请公布号 CN101848229A 申请公布日期 2010.09.29
申请号 CN200910080859.7 申请日期 2009.03.24
申请人 北京理工大学 发明人 周培德;付梦印;张晓晨
分类号 H04L29/08(2006.01)I;G06F17/30(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 北京理工大学专利中心 11120 代理人 张利萍
主权项 1.一种解决分布式网络计算中最小生成网络问题的方法,其特征在于包括以下步骤:首先,描述最小生成网络问题:给定n<sub>1</sub>个点的集合S<sub>1</sub>,即<img file="F2009100808597C0000011.GIF" wi="420" he="83" />集合S<sub>1</sub>中各点的x,y坐标均为已知;给定n<sub>2</sub>个点的集合S<sub>2</sub>,即<img file="F2009100808597C0000012.GIF" wi="467" he="86" />集合S<sub>2</sub>中各点的度数p<sub>i</sub>(d<sub>i</sub>)及拓扑关系亦均为已知,但p<sub>i</sub>的x,y坐标未知;设<img file="F2009100808597C0000013.GIF" wi="154" he="66" /><img file="F2009100808597C0000014.GIF" wi="177" he="67" />现要求将p<sub>i</sub>嵌入到q<sub>i</sub>并保持给定的拓扑关系,并使边长之和为最小,其中,边长指存在拓扑关系的两个节点间的连线,边长之和指的所有存在拓扑关系的节点间的连线长度;当n<sub>1</sub>=n<sub>2</sub>时,依据p<sub>i</sub>(d<sub>i</sub>)的不同取值采用不同的方法进行求解:当点d′位于四边形abcd内不同位置时,连接a,b,c,d与d′连线长度之和也不同,当<img file="F2009100808597C0000015.GIF" wi="39" he="38" />位于<img file="F2009100808597C0000016.GIF" wi="50" he="53" />与<img file="F2009100808597C0000017.GIF" wi="57" he="53" />的交点时,连接a,b,c,d与d′连线长度之和最小;当<img file="F2009100808597C0000018.GIF" wi="120" he="84" />增加时,连线长度之和也将随之增加,其中<img file="F2009100808597C0000019.GIF" wi="147" he="76" />将连线长度之和达最小的点称为核心点;对于五边形来说,首先将五边形划分为一个锐角三角形和一个四边形,然后在三角形内部寻找一个点a,使a与三角形三个顶点连线之间的夹角均为120°,或接近120°;在四边形内,将四边形两条对角线的交点设为点b;则连线ab的中点c一定是所求五边形内的点,且点c与五边形各顶点长度之和达到最小或次最小,即,点c是五边形的核心点或近似核心点;同理,采用上述方法,可找出n凸多边形的核心点或近似核心点;当点集S<sub>1</sub>中的点全部为CH(S<sub>1</sub>)顶点时,此时,CH(S<sub>1</sub>)的直径端点、次直径端点不能作为核心点,删去此类端点,将剩余点将作为核心点的候选点;如果点集S<sub>1</sub>有2层以上的凸壳,则只能从最内层凸壳的顶点中选取核心点;由于点集S<sub>2</sub>中只给定了点之间的拓扑关系,而各点的x,y坐标尚未知,故将S<sub>2</sub>中点嵌入S<sub>1</sub>并要求边长之和最小难以实现;因此,先由S<sub>2</sub>及拓扑关系构造网络G<sub>3</sub>,然后将G<sub>3</sub>嵌入S<sub>1</sub>,并在此基础上尽量满足边长之和最小的要求;其中,构造网络G<sub>3</sub>的方法,并将G<sub>3</sub>嵌入到S<sub>1</sub>的过程如下:(a)构造G<sub>3</sub>网络为构造G<sub>3</sub>网络,采用以下算法,称为Z<sub>1</sub>算法;已知点集<img file="F2009100808597C0000021.GIF" wi="410" he="86" />其中p<sub>i</sub>的x,y坐标未定;p<sub>i</sub>与p<sub>j</sub>之间的拓扑关系及各点度数均为已知,<img file="F2009100808597C0000022.GIF" wi="154" he="65" /><img file="F2009100808597C0000023.GIF" wi="288" he="83" />步骤1:首先,从S<sub>2</sub>中选取度数为1的点,设为p<sub>i</sub>;如果没有度数为1的点,则选取度数为2或3的点;然后,寻找与p<sub>i</sub>有拓扑关系的点,设为p<sub>i+1</sub>;步骤2:若p<sub>i+1</sub>的度数为3,则构造与<img file="F2009100808597C0000024.GIF" wi="116" he="65" />垂直的直线段<img file="F2009100808597C0000025.GIF" wi="180" he="79" />其中p<sub>i+2</sub>,p<sub>i+3</sub>均为与p<sub>i+1</sub>有拓扑关系的点,并且<img file="F2009100808597C0000026.GIF" wi="664" he="100" />或构造三角形p<sub>i+1</sub>p<sub>i+2</sub>p<sub>i+3</sub>,其中p<sub>i+2</sub>与p<sub>i+3</sub>有拓扑关系;步骤3:若{(p<sub>i+1</sub>的度数为4)∧(与p<sub>i+1</sub>有拓扑关系的点为p<sub>i+2</sub>,p<sub>i+3</sub>与p<sub>i+4</sub>)∧(与p<sub>i+2</sub>,p<sub>i+4</sub>有拓扑关系的点是p<sub>i+5</sub>)∨(p<sub>i+3</sub>与p<sub>i+5</sub>有拓扑关系)},则构造四边形p<sub>i+1</sub>p<sub>i+2</sub>p<sub>i+5</sub>p<sub>i+4</sub>或三角形p<sub>i+1</sub>p<sub>i+3</sub>p<sub>i+4</sub>;步骤4:若{(p<sub>i+1</sub>的度数为4)∧(p<sub>i+2</sub>,p<sub>i+4</sub>均与p<sub>i+1</sub>有拓扑关系但p<sub>i+2</sub>与p<sub>i+4</sub>无拓扑关系)∧(p<sub>i+5</sub>,p<sub>i+7</sub>分别与p<sub>i+2</sub>,p<sub>i+4</sub>有拓扑关系但p<sub>i+5</sub>与p<sub>i+7</sub>无拓扑关系)∧(p<sub>i+6</sub>分别与p<sub>i+5</sub>,p<sub>i+7</sub>有拓扑关系)∧(p<sub>i+5</sub>与p<sub>i+1</sub>,p<sub>i+6</sub>与p<sub>i+4</sub>,p<sub>i+6</sub>与p<sub>i+1</sub>,p<sub>i+2</sub>与p<sub>i+7</sub>均无拓扑关系)},则构造六边形p<sub>i+1</sub>p<sub>i+2</sub>p<sub>i+5</sub>p<sub>i+6</sub>p<sub>i+7</sub>p<sub>i+4</sub>或三角形p<sub>i+1</sub>p<sub>i+3</sub>p<sub>i+4</sub>;否则,{(p<sub>i+5</sub>与p<sub>i+1</sub>)∨(p<sub>i+6</sub>与p<sub>i+4</sub>)∨(p<sub>i+6</sub>与p<sub>i+1</sub>)∨(p<sub>i+2</sub>与p<sub>i+7</sub>)}有拓扑关系,构造{(三角形p<sub>i+1</sub>p<sub>i+2</sub>p<sub>i+5</sub>)∨(五边形p<sub>i+4</sub>p<sub>i+1</sub>p<sub>i+2</sub>p<sub>i+5</sub>p<sub>i+6</sub>)∨(三角形p<sub>i+1</sub>p<sub>i+2</sub>(p<sub>i+5</sub>)p<sub>i+6</sub>)∨(三角形p<sub>i+1</sub>p<sub>i+2</sub>p<sub>i+7</sub>(p<sub>i+4</sub>)};步骤5:对S<sub>2</sub>中各点重复步骤2至步骤4;至此,可确定出网络G<sub>3</sub>中顶点p<sub>i</sub>的x,y坐标,并具有给定的顶点度数及拓扑关系,<img file="F2009100808597C0000027.GIF" wi="168" he="82" /><img file="F2009100808597C0000028.GIF" wi="2012" he="172" /><img file="F2009100808597C0000029.GIF" wi="242" he="87" />在(a)中,p<sub>i</sub>的孙子节点位于A<sub>j</sub>内或跨<img file="F2009100808597C00000210.GIF" wi="141" he="80" /><img file="F2009100808597C00000211.GIF" wi="150" he="78" />当p<sub>i</sub>的孙子节点p′同时与p<sub>i+i′</sub>,p<sub>i+i′+1</sub>有拓扑关系,<img file="F2009100808597C00000212.GIF" wi="137" he="59" />时,p′位于A<sub>j</sub>内;如果p<sub>i</sub>同时与p<sub>i+i′</sub>,p<sub>i+i′+2</sub>有拓扑关系,则<img file="F2009100808597C00000213.GIF" wi="324" he="67" />当p<sub>i</sub>的孙子节点p′、p″均与p<sub>i+i′</sub>有拓扑关系时,p′、p″跨<img file="F2009100808597C00000214.GIF" wi="147" he="84" />(b)将G<sub>3</sub>嵌入S<sub>1</sub>为将G<sub>3</sub>嵌入S<sub>1</sub>,采用以下算法,称为Z<sub>2</sub>算法;步骤1、用G<sub>1</sub>代表的G<sub>2</sub>,用G<sub>2</sub>代表S<sub>1</sub>如果<img file="F2009100808597C0000031.GIF" wi="414" he="204" />则计算G<sub>1</sub>中TSP的一条回路,在G<sub>1</sub>中按这条回路以及给定的拓扑关系,放置G<sub>2</sub>的顶点<img file="F2009100808597C0000032.GIF" wi="353" he="75" />否则,计算CH(G<sub>1</sub>);步骤2、如果<img file="F2009100808597C0000033.GIF" wi="1382" he="325" />均为CH(G<sub>1</sub>)的顶点,则计算CH(G<sub>1</sub>)的边长;设<img file="F2009100808597C0000034.GIF" wi="729" he="138" />删去<img file="F2009100808597C0000035.GIF" wi="227" he="97" />p<sub>a</sub>与p<sub>b</sub>分别放置于q<sub>a′</sub>与q<sub>a′+1</sub>,按拓扑关系放置其他顶点;步骤3、如果<img file="F2009100808597C0000036.GIF" wi="1381" he="321" />并非均为CH(G<sub>1</sub>)的顶点,则计算通过<img file="F2009100808597C0000037.GIF" wi="237" he="81" />的最短路径L,L的起点、终点分别<img file="F2009100808597C0000038.GIF" wi="1996" he="340" />①如果<img file="F2009100808597C0000039.GIF" wi="608" he="94" />即CH<sub>m</sub>(G<sub>1</sub>)的顶点集包含3个点,则计算<img file="F2009100808597C00000310.GIF" wi="606" he="102" />删去<img file="F2009100808597C00000311.GIF" wi="689" he="104" />设为<img file="F2009100808597C00000312.GIF" wi="209" he="112" />保留点<img file="F2009100808597C00000313.GIF" wi="73" he="68" />与<img file="F2009100808597C00000314.GIF" wi="109" he="68" /><img file="F2009100808597C00000315.GIF" wi="262" he="63" />或者<img file="F2009100808597C00000316.GIF" wi="913" he="67" />取边长之和最小者;其他的点可以任意放置,<img file="F2009100808597C00000317.GIF" wi="79" he="82" />或者<img file="F2009100808597C00000318.GIF" wi="231" he="79" />为核心点;②如果CH<sub>m</sub>(G<sub>1</sub>)的顶点集由<img file="F2009100808597C0000041.GIF" wi="307" he="71" />与<img file="F2009100808597C0000042.GIF" wi="78" he="71" />组成,且<img file="F2009100808597C0000043.GIF" wi="161" he="102" />是长对角线,则删去<img file="F2009100808597C0000044.GIF" wi="205" he="109" /><img file="F2009100808597C0000045.GIF" wi="496" he="57" />或者<img file="F2009100808597C0000046.GIF" wi="593" he="66" />取边长之和最小者,其他点可以任意放置;<img file="F2009100808597C0000047.GIF" wi="231" he="72" />或者<img file="F2009100808597C0000048.GIF" wi="248" he="75" />为核心点;③如果<img file="F2009100808597C0000049.GIF" wi="220" he="80" />组成CH<sub>m</sub>(G<sub>1</sub>)顶点集∧<img file="F2009100808597C00000410.GIF" wi="115" he="73" />是CH<sub>m</sub>(G<sub>1</sub>)的直径,则删去<img file="F2009100808597C00000411.GIF" wi="142" he="74" /><img file="F2009100808597C00000412.GIF" wi="768" he="55" />取边长之和最小者;其他点任意放置;<img file="F2009100808597C00000413.GIF" wi="77" he="71" />或<img file="F2009100808597C00000414.GIF" wi="82" he="73" />或<img file="F2009100808597C00000415.GIF" wi="66" he="62" />为核心点;④如果CH<sub>m</sub>(G<sub>1</sub>)的顶点集由6个点组成,则删去其直径与次直径,其他与5个点的处理相同;取使<img file="F2009100808597C00000416.GIF" wi="867" he="280" />成立的点q<sub>i</sub>,q<sub>i</sub>←p<sub>a</sub>,其他点任意放置,q<sub>i</sub>为核心点;步骤5、如果1≤p<sub>i</sub>(d<sub>i</sub>)<n-1∧m≥2,<img file="F2009100808597C00000417.GIF" wi="209" he="79" />则用Z<sub>1</sub>算法构造网络G<sub>3</sub>;然后逐层计算G<sub>3</sub>的凸壳,设为CH<sub>1</sub>(G<sub>3</sub>),CH<sub>2</sub>(G<sub>3</sub>),....,CH<sub>l</sub>(G<sub>3</sub>);在(b)中,如果m=l∧CH<sub>i</sub>(G<sub>3</sub>)与CH<sub>i</sub>(G<sub>1</sub>)顶点数相同,<img file="F2009100808597C00000418.GIF" wi="224" he="62" />则取相邻两层或隔层顶点之间连线长度之和最小者;从两正切线之间顶点中选点进行连线,可以使连线长度之和达到最小;如果m>l,从外层开始,逐层比较顶点数,如果顶点数|CH<sub>1</sub>(G<sub>1</sub>)|<|CH<sub>1</sub>(G<sub>3</sub>)|,则从CH<sub>2</sub>(G<sub>1</sub>)中选|CH<sub>1</sub>(G<sub>3</sub>)|-|CH<sub>1</sub>(G<sub>1</sub>)|个点与CH<sub>1</sub>(G<sub>1</sub>)中的点连接,并使边长之和最小;否则,|CH<sub>1</sub>(G<sub>1</sub>)|>|CH<sub>1</sub>(G<sub>3</sub>)|,则从CH<sub>2</sub>(G<sub>3</sub>)中选|CH<sub>1</sub>(G<sub>1</sub>)|-|CH<sub>1</sub>(G<sub>3</sub>)|个点与插入CH<sub>1</sub>(G<sub>1</sub>)中,并使边长之和最小;其他各层依序调整;如果m<l,则用m>l的方法进行处理。
地址 100081 北京市海淀区中关村南大街5号