6.6-布线问题

合集下载

商业建筑通信布线标准(TIA/EIA568)

商业建筑通信布线标准(TIA/EIA568)

商业建筑通信布线标准EIA/TIA 5681.1 目的这个标准确定了一个可以支持多品种多厂家的商业建筑的综合布线系统,同时也提供了为商业服务的电信产品的设计方向。

即使对随后安装的电信产品不甚了解,该标准可帮您对产品进行设计和安装。

在建筑建造和改造过程中进行布线系统的安装比建筑落成后实施要大大节省人力物力财力。

这个标准确定了各种各样布线系统配置的相关元器件的性能和技术标准。

为达到一个多功能的布线系统,已对大多数电信业务的性能要求进行了审核。

业务的多样化及新业务的不断出现会对所需性能作某些限制。

用户为了了解这些限制应知道所需业务的标准。

1. 2 相关的标准这个标准是一系列关于建筑布线中电信产品和业务的技术标准之一。

本文连同相关的标准满足了电信行业发展企业结构的需要。

为电信服务的商业建筑标准(EIA/TIA-569) (Ref B1.3) 和住宅及小型商业区综合布线标准(EIA/TIA-570)(Ref B1.2)。

1. 3 标准的说明标准分为强制性和建议性两种。

所谓强制性是指要必须的,而建议性要求意味着也许可能或希望。

(这两种概念将在本文替出现)。

强制性标准通常适于保护、生产、管理,兼容:它强调了绝对的最小限度可接受的要求,建议性或希望性的标准通常针对最终产品。

在某种程度上在统计围确保全部产品同使用的设施设备相适应体现了这些准则。

另一方面,建议性准则是用来在产品的制造中提高生产率,无论是强制性的要求还是建议性的都是为同一标准的技术规。

建议性的标准是为了达到一个目的,就是未来的设计要努力达到特殊的兼容性或实施的先进性。

在本文中。

图表中的注释是标准的一个正式的部分,是用来提供有益的建议。

其他文件的引用除了特殊说明外都指的是标准的最新修订本。

该标准是现行使用的,文中所涉及的标准都是服从修订本的,而且通过在网络的工作过程及终端设备的布线技术中得到了验证。

1. 4综合布线系统的结构图1.1给出现代建筑布线系统的各个功能部分的模型。

六类布线注意的问题

六类布线注意的问题

六类布线注意的问题六类布线安装操作要点在TIA和ISO的第六类规范中,没有列出新的安装技术操作程序。

不同之处在于,VI类布线由于其高性能要求,需要更高的安装质量。

责任制造商强烈建议严格按照布线标准中规定的或制造商提供的安装程序进行安装操作。

在布线当中最常遇见的问题就是在布线过程中线缆受到的拉力。

布线时线缆受到的拉力不能超过线缆制造商所规定的最大可承受拉力。

拉力过大会使线缆内的扭绞线对层数发生变化,严重影响线缆抗噪声(next、fext等)的能力,从而导致线对扭绞松开,甚至可能对导体造成破坏。

再就是当把线缆从缠线轮上拉出来时,要注意防止线缆可能会扭结。

如果线缆扭结,那这个线缆就算是坏了,应被更换。

否则就算安装工程师把扭结的线拉直,那这段线缆在被测试时,线缆也会被检测出来。

即使就算通过,也会存在隐患,而随着这些隐患数量的增加,也会引起六类性能余量降到最低程度,也就会出现故障。

另一件值得注意的事情是电缆弯曲的半径。

在布线过程中避免电缆过度弯曲,因为这会改变电缆对中的层空间。

当张力过大时,双绞线会松动,导致阻抗失配,使回波损耗性能达不到标准。

此外,电缆中四对电缆的层间关系也可能发生变化,导致抗噪声能力下降。

因此,所有制造商都建议电缆的弯曲半径不应小于已安装电缆直径的四倍。

这意味着对于典型的6类电缆,弯曲半径需要大于25mm。

这些问题大多发生在配电柜中,而且大多数不会被发现。

即使是最细心的安装人员也可能会遇到这样的问题。

因此,制造商建议使用合适且合理的电线管理框架。

除了上面说的以外,线缆弯曲半径很制还有不同的(更严格的)约束。

一般的,在安装时最小的线缆弯曲半径是线缆直径的8倍。

实际上这意味着在后箱内允许有25毫米半径弯曲半径,而引导线缆的导管最小弯曲半径则是50毫米。

还值得注意的是,电缆不应绑得太紧,以避免压缩电缆。

此问题主要发生在有许多绑定和绑定电缆时。

位于外部的电缆上的压力大于线束中的压力。

如果压力过高,电缆中的双绞线会变形,从而影响电缆的某些性能。

六类布线注意的问题

六类布线注意的问题

六类布线注意的问题摘要:在六类布线中的任何安装错误或走所谓的"捷径",都有可能导致测试勉强合格或不合格,因此,大多数制造商在产品出售时,都建议安装商严格遵守布线标准文件中规定的安装方法及随产品提供的建议方法,这也许是六类布线安装标准出台前保证布线质量的有效方法之一。

关键词:六类布线安装方法布线质量由于在AN/NZS 3080、TIA(电信工业协会)或ISO(国际标准化组织)六类规范中并没有详细列出任何新的安装方法,因此,几年前为五类布线规定的安装方法也适用于六类布线。

但是,六类布线由于性能标准非常严格,因此,对安装质量要求更高。

在六类布线中的任何安装错误或走所谓的"捷径",都有可能导致测试勉强合格或不合格,因此,大多数制造商在产品出售时,都建议安装商严格遵守布线标准文件中规定的安装方法及随产品提供的建议方法,这也许是六类布线安装标准出台前保证布线质量的有效方法之一。

比如美国著名的Molex企业布线网络部多年来一直强调,其产品需由经认证的优质安装商采用优质的方法安装,它认为产品及其安装对布线系统的整体质量将产生同样的影响。

那么,在六类布线安装过程中有哪些重要问题需要注意的呢?1.电缆拉伸张力不要超过电缆制造商规定的电缆拉伸张力。

张力过大会使电缆中的线对绞距变形,严重影响电缆抑制噪音(包括近末端交扰、远端串音及其衍生物)能力以及电缆的结构化回波损耗,进而改变电缆的阻抗,损害整体回波损耗性能,影响高速局域网(如吉位以太网)的传输性能。

此外,张力过大还可能导致线对散开,损坏导线。

2.电缆弯曲半径避免电缆过度弯曲。

因为这可能导致线对散开,引起阻抗不匹配及不可接受的回波损耗性能。

另外,弯曲过度还会影响电缆中的线对绞距,电缆内部4个线对绞距的改变将导致噪声抑制问题。

一般情况下,电缆制造商都建议,安装后的电缆弯曲半径不得低于电缆直径的8倍。

对典型的六类电缆,弯曲半径应大于50mm.。

六类布线应用中问题分析(2)

六类布线应用中问题分析(2)

六类布线应用中问题分析(2)4.TIA/EIA 568 B新的布线标准美国通信工业协会TIA在2001年3月正式通过了新一代结构化布线标准TIA/EIA-568-B,并且于4月下旬正式印刷发行。

新标准的出现取代了以前的TIA/EIA-568-A、TIA/EIA-568-A-附录1-5、TSB67/72/75/95、TIA/EIA/IS-729等。

新的568-B系列标准分为三部分,B.1为商用建筑物电信布线标准总则,包括布线子系统定义、安装实践、链路/信道测试模型及指标;B.2为平衡双绞线部分,包括100W非屏蔽/屏蔽线缆和连接硬件以及跳接线的性能要求;B.3为光纤布线部分,包括光纤、光纤连接器件、跳线、现场测试仪的规格要求。

和前一个版本相比,除了内容篇幅上的增加和细分以外,还在以下方面做了较大的变动:参数的命名(把原来的Attenuation改为Insertion Loss)、测试模型的建立(把原来的Basic Link改为Permanent Link)、类别的重新定义(去掉以前的4类和5类,代替以5e和将来的6类)、新传输媒体和接口的引入(50/125μm的多模光纤,小型化光纤接口SFF)等。

这些改变以及TIA和ISO布线标准的同步接轨,使得厂商、安装商和用户在生产、安装和测试认证时更方便、更高效、更准确。

也为即将到来的高速应用提供了强有力的保障。

TIA/EIA出版了TIA/EIA 568 B新的布线标准。

TIA/EIA 568 B的这一新标准建议把超五类作为数据通信布线系统最低等级的类别。

关注的新的六类标准尚在研究之中,还没有最终标准化。

但是,六类布线系统仍在全力持续发展自己的市场。

六类系统是一个热点,它在结构化布线系统中吸引了更多的注意,占据了非常流行的位置。

之所以如此,其最主要的原因是高速宽带互联网在商业和住宅领域中的流行,以及千兆位以太网在局域网中的广泛应用。

所有这些应用都需要高质量、高性能的六类系统,以支持物理层结构。

兆网综合(六类线)布线 六大要注意事项

兆网综合(六类线)布线 六大要注意事项

兆网综合(六类线)布线六大要注意事项今年,TIA/EIA委员会正式发布综合布线六类标准(标准号:ANSI/TIA/EIA-568-B.2-1),TIA568B从此真正成为一个能够全面满足目前的网络发展状况,解决网络建设的基础标准集。

尽管网络的发展日新月异,但就网络建设来说,千兆网络即将成为网络建设的普遍需求时,作为网络的骨架,六类标准的推出可以说成为千兆网络的及时雨,为建设基于千兆以太网的企业新一代网络在物理层面打下了坚实的基础。

六类布线系统在传输速率上可提供高于超五类2.5倍的高速带宽,在100MHz时高于超五类300%的ACR值。

在施工安装方面,六类比超五类难度也要大很多。

六类布线系统的施工人员必须按照国际标准要求的规范去执行。

因为"越是高级的铜缆对外界的异常就越敏感。

随着传输速率的上升,安装施工的正确与否对系统性能的影响就越大"。

不合理的管线设计,不规范的安装步骤,不到位的管理体制,都会对六类布线的测试结果(包括物理性能和电气性能)带来影响,而且有些会成为难以修复的故障,甚至只能重新敷设一条链路来更替。

从推出六类布线系统至今,强者网络积累了大量的现场施工经验,强者网络公司指出,企业在施工时应该注意以下六大注意事项。

?注意事项之一由于六类线缆的外径要比一般的五类线粗,为了避免线缆的缠绕(特别是在弯头处),在管线设计时一定要注意管径的填充度,一般内径20mm的线管以放2根六类线为宜。

?注意事项之二桥架设计合理,保证合适的线缆弯曲半径。

上下左右绕过其他线槽时,转弯坡度要平缓,重点注意两端线缆下垂受力后是否还能在不压损线缆的前提下盖上盖板。

?注意事项之三放线过程中主要是注意对拉力的控制,对于带卷轴包装的线缆,建议两头至少各安排一名工人,把卷轴套在自制的拉线杆上,放线端的工人先从卷轴箱内预拉出一部分线缆,供合作者在管线另一端抽取,预拉出的线不能过多,避免多根线在场地上缠结环绕。

?注意事项之四拉线工序结束后,两端留出的冗余线缆要整理和保护好,盘线时要顺着原来的旋转方向,线圈直径不要太小,有可能的话用废线头固定在桥架、吊顶上或纸箱内,做好标注,提醒其他人员勿动勿踩。

六类综合布线施工

六类综合布线施工

六类综合布线安装方法在五类布线规定的安装方法同样也适用于六类布线。

其差别在于,由于六类具有非常严格的性能标准,因此其对安装质量要求更高。

六类布线中的任何安装错误或线路剪短,都更有可能会导致合格/ 不合格测试中的余量降低导致测试不通过。

项目部施工人员应在综合布线系统施工中严格遵守布线标准文件中规定的安装方法。

因为产品和安装会对布线系统的整体质量产生同样的影响。

一、在双绞线布放施工过程中的部分重要问题:1、线缆两端应用油性笔写上标号或贴上标签纸后再缠上透明胶带,明确标明点位号。

点位号应与图纸相对应,一个标号只能对应一条双绞线。

2、线缆应防止被磨、刮、蹭、拖等造成外护套损伤或扭伤。

所有的钢管口都要安放塑料护口。

3、施工中,非屏蔽4对双绞线缆的弯曲半径至少为线缆外径的8倍,光缆的弯曲半径至少为线缆外径20倍。

对于六类线缆,弯曲半径应大于5 0 毫米。

4、线缆布放最大允许拉力:1根双绞线,拉力为10 Kg、2根双绞线,拉力为15 Kg、3根双绞线,拉力为20 Kg、n根双绞线,拉力为n×5+5( Kg),但最大拉力不得超过40Kg,即最多一次只能拉7根双绞线。

必要时要采用润滑剂。

5、桥架内线缆应分层布放,不宜交叉,吊顶内桥架截面利用率不宜超过50%。

6、布放线缆两端应留有余量,在设备间为到机柜中心位置后2.5m,终端盒为出盒后0.15m。

拉线工序结束后,两端留出的冗余线缆要整理和保护好,盘线时要顺着原来的旋转方向。

7、桥架内垂直线缆每米要绑扎固定一次,机柜内线缆绑扎点间距不大于50cm。

水平桥架内3-5米绑扎一次。

所有绑扎不能过紧,不能使缆线产生应力。

8、线缆布放完成后应作整理,要求整齐、美观。

如下图:二、在双绞线布放施工过程中的部分重要问题的说明:(a) 线缆拉伸张力不要超过线缆规定的线缆拉伸张力。

张力过大会使线缆中的线对绞距变形,严重影响线缆抑制不希望噪声(NEXT、FEXT 及衍生物) 的能力,及严重影响线缆的结构化回波损耗,这会改变线缆的阻抗,损害整体回波损耗性能,可能会导致线对散开,可能会损坏导线。

分支限界法求布线问题

分支限界法求布线问题

布线问题:如图1所示,印刷电路板将布线区域划分成n*m个方格。

精确的电路布线问题要求确定连接方格a的中点到b的中点的最短布线方案。

在布线时,电路只能沿直线或直角布线,如图1所示。

为了避免线路相交,已经布线的方格做了封锁标记(如图1中阴影部分),其他线路不允许穿过被封锁的方格。

3 问题的算法选择题目的要求是找到最短的布线方案,从图1的情况看,可以用贪婪算法解决问题,也就是从a开始朝着b的方向垂直布线即可。

实际上,再看一下图2,就知道贪婪算法策略是行不通的。

因为已布线的放个没有规律的所以直观上说只能用搜索方法去找问题的解。

根据布线方法的要求,除边界或已布线处,每个E-结点分支扩充的方向有4个:上、下、左、右,也就是说,一个E-结点扩充后最多产生4个活结点。

以图2的情况为例,图的搜索过程如图3所示。

搜索以a为第一个E-结点,以后不断扩充新的活结点,直到b结束(当然反之也可以)。

反过来从b到a,按序号8-7-6-5-4-3-2-1就可以找到最短的布线方案。

从图3中也可以发现最短的布线方案是不唯一的。

且由此可以看出,此问题适合用分支限界搜索。

#include <stdio.h>#include <stdlib.h>typedef struct Position{int row;int col;}Position;typedef struct team{int x;int y;struct team *next;}team,*TEAM;Position start,end,path[100];TEAM team_l=NULL;int a[100][100];int m,n,path_len;void output(){int i,j;printf("\n|-------------------布线区域图-------------------|\n");for(i=0;i<m+2;i++){for(j=0;j<n+2;j++){printf("%5d",a[i][j]);}printf("\n");}printf("|------------------------------------------------|\n");return;}void input_data(){char yes;int x,y;printf("创建布线区域...\n\n");printf("请输入区域大小(行列的个数): ");scanf("%d,%d",&m,&n);printf("请输入开始点坐标(x,y): ");scanf("%d,%d",&start.row,&start.col);printf("请输入结束点坐标(x,y): ");scanf("%d,%d",&end.row,&end.col);printf("区域内是否有被占用点? (y/n) ");fflush(stdin);scanf("%c",&yes);fflush(stdin);while(yes=='y'){printf("请输入占用点的坐标(x,y): ");scanf("%d,%d",&x,&y);fflush(stdin);if(x<0 || x>m+1 || y<0 || y>n+1 || (x==start.row && y==start.col) || (x==end.row && y==end.col)){printf("输入错误,请重新输入\n");continue;}else{a[x][y]=-1;}printf("是否还有被占用点? (y/n) ");scanf("%c",&yes);fflush(stdin);}for(x=0;x<m+2;x++){a[0][x]=-1;a[m+1][x]=-1;}for(x=0;x<n+2;x++){a[x][0]=-1;a[x][n+1]=-1;}return;}void inq(Position p){TEAM t,q;q=team_l;t=(TEAM)malloc(sizeof(TEAM));t->x=p.row;t->y=p.col;t->next=NULL;if(team_l==NULL){team_l=t;return ;}while(q->next!=NULL){q=q->next;}q->next=t;return;}Position outq(){Position out;out.row=team_l->x;out.col=team_l->y;team_l=team_l->next;return out;}void find_path(){Position offset[4];Position here={start.row,start.col};Position nbr={0,0};int num_of_nbrs=4;int i,j;offset[0].row=0;offset[0].col=1; //右offset[1].row=1;offset[1].col=0; //下offset[2].row=0;offset[2].col=-1;//左offset[3].row=-1;offset[3].col=0;//上printf("\n开始搜索路径...\n");if((start.row == end.row)&&(start.col == end.col)){ path_len = 0;return;}while(1){for(i=0;i<num_of_nbrs;i++){nbr.row=here.row+offset[i].row;nbr.col=here.col+offset[i].col;if(a[nbr.row][nbr.col]==0){a[nbr.row][nbr.col]=a[here.row][here.col] + 1;if((nbr.row == end.row) && (nbr.col == end.col)) break;inq(nbr); //nbr入队}}//是否到达目标位置finishif((nbr.row == end.row) && (nbr.col == end.col)) break;//或节点队列是否为空if(team_l==NULL){printf("\n没有结果\n");return ;}here=outq();}path_len=a[end.row][end.col];here=end;for(j=path_len-1;j>=0;j--){path[j] = here;for(i = 0;i < num_of_nbrs;i++){nbr.row = here.row + offset[i].row;nbr.col = here.col + offset[i].col;if(a[nbr.row][nbr.col] == j) //+ 2)break;}here=nbr;}return;}void out_path(){int i;printf("\n路径为:\n");printf("(%d,%d) ",start.row,start.col);for(i=0;i<path_len;i++){printf("(%d,%d) ",path[i].row,path[i].col);}printf("\n");return;}void main(){input_data();output();find_path();out_path();output(); }。

六类布线应用中问题分析(1)

六类布线应用中问题分析(1)

六类布线应用中问题分析(1)摘要:本文阐述了6类布线系统组件的互用性和系统的硬件连接及测试,分析了系统的短链路问题和TIA/EIA568B布线标准。

关键词:互用性硬件连接短链路布线标准1. 6类组件的互用性六类组件的互用性。

组件的互用性,顾名思义,指组件之间能够互换,相互之间都能匹配。

给每个组件分配一个最低性能指标(所有组件的指标总和等于六类线路最低性能指标),符合这个指标的同类组件都可以互换。

互用性对单个制造商来说,这可能并没有如此重要,但对于整个行业来说,互用性的重要性就体现出来了。

互用性将会有如下作用:组件提供商供货更灵活,促使制造商提高产品性能,为下一代网络开发商定制了更好的框架,所有这些都会让终端用户更满意,让整个行业发展得更兴旺。

互用性虽然能带给我们的系统带来诸多的优点,但要在整个行业实现它实在是很困难的。

首先,需要能够准确测量线路中的每一个组件。

虽然很早以前,我们就能准确测量5类、超5类电缆、模块化连接器、配线架、跳线。

但六类的规范更严格,测试步骤更加复杂,测试参数也更多,以此来保证当把各组件连在一起时,整体性能达到要求。

然而更严格的规范需要更好的计划,更精确的测试手段和更好的设备。

2. 6类布线的硬件连接硬件连接包括模块化插座,配线架,打线系统以及跳线。

连接的主要问题是近端串扰(NEXT)和远端串扰(FEXT)以及标准插座的平衡测试步骤。

另外,跳线的测试步骤必须制定出来。

2.1NEXT测试NEXT测试步骤是最大的问题,超5类非嵌入式插头测试步骤经过了优化,由于插座测试时,测量的可变性造成的测量误差已经降低。

当一个插座和一个最坏情况的低高(low and high)测试插头连接时,超5类连接器在100MHz的NEXT是43dB。

非嵌入式插头测试过去是一个最坏情况测试,它规定了如何在最坏情况下评价被测试的插头。

比如,过去的测试中,第36-45对线的测试允许误差范围大致是+/-0.5dB,这导致匹配测试结果会有+/-1dB的误差。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6.6 布线问题算法设计思想:采用分支限界法求解。

首先将问题转化为一颗解空间树:树根为线头,树高为线头到线尾的格数,每个节点有4个孩子,代表下一格可以朝4个方向。

这样,布线问题就是搜索从树根到代表线尾节点的一条最短路径。

分支限界法的本质是对解空间树的BFS(广度优先)搜索,即每进一格就将状态入队,而后再依次将出队的每个状态的子状态入队,直到到达所求的状态节点即线尾。

该问题的剪枝条件显而易见,即当遇到电路板上的封锁标记时进行剪枝。

为了方便剪枝,算法开始进行了预处理,在电路板周围加上了一圈“围墙”(虚拟的封锁标记),使搜索路径时对边界的处理与对封锁标记的处理统一。

因为该问题BFS的队列中,并没有明显的优先级,所以该算法采用普通队列式。

除了上述三点之外,程序对鲁棒性做了增强,对非法输入和文件错误进行了检测。

程序设计代码:/*头文件布线问题.h*/#ifndef KNAP_H#define KNAP_H#include <iostream>#include <fstream>#include <list>using namespace std;class position //位置类{public:int row; //行坐标int column; //列坐标bool operator==(const position &b) const //重载运算符==,表示位置相同{if(row == b.row && column == b.column)return true;elsereturn false;}position& operator=(const position &b) //重载运算符=,位置赋值{this->row = b.row;this->column = b.column;return *this;}position operator+(const position &b)const //重载运算符+,表示移动一格{position temp;temp.row = row + b.row;temp.column = column + b.column;return temp;}};class Wiring //布线类{public:Wiring(char *in, char *out); //构造函数~Wiring(); //析构函数void Solve(); //输出结果到文件protected:bool FindPath(); //找出布线方案void PrintPath(); //输出结果布线方案void PrintFail(); //输出没有路径信息private:int n, m; //电路板行列数int **grid; //电路板格子position start, finish; //起点和终点position *nextstep; //下一步四个方向ofstream fout; //输出结果文件};#endif/*函数实现文件布线问题.cpp*/#include "布线问题.h"Wiring::Wiring(char *in, char *out) : fout(out){ifstream fin(in);if( !fin ){cerr << "文件" << in << "无法打开!" << endl;exit(1);}fin >> n >> m; //初始化电路板大小n*m grid = new int*[n+2];for(int i = 0; i <= n+1; i++){grid[i] = new int[m+2];if(i == 0 || i == n+1) //加上下围墙for(int j = 0; j <= m+1; j++)grid[i][j] = 1;else{grid[i][0] = grid[i][m+1] = 1; //加左右围墙for(int j = 1; j <= m; j++)fin >> grid[i][j];}}fin >> start.row >> start.column; //初始化起点和终点fin >> finish.row >> finish.column;fin.close();nextstep = new position[4];nextstep[0].row = 0; nextstep[0].column = 1; //右nextstep[1].row = 1; nextstep[1].column = 0; //下nextstep[2].row = 0; nextstep[2].column = -1; //左nextstep[3].row = -1; nextstep[3].column = 0; //上if( !fout ){cerr << "文件" << out << "无法打开!" << endl;exit(1);}}Wiring::~Wiring(){if(fout)fout.close();for(int i = 0; i <= n+1; i++)if(grid[i])delete[] grid[i];if(grid)delete[] grid;}void Wiring::Solve(){if(FindPath())PrintPath(); //输出路径elsePrintFail(); //无路径}bool Wiring::FindPath(){if(start == finish) //如果起点和终点重合return 0;position here, near; //当前位置和相邻的一个位置grid[start.row][start.column] = 2; //开始点步数记为2 list<position> Queue; //辅助队列Queue.push_back(start); //初始位置是起点while(1){here = Queue.front(); //取队尾位置Queue.pop_front();for(int i = 0; i < 4; i++){near = here + nextstep[i]; //走一格if(grid[near.row][near.column] == 0){grid[near.row][near.column] = grid[here.row][here.column] + 1;if(near == finish) //达到终点break;Queue.push_back(near); //新位置入队}}if(near == finish) //布线完成break;if(Queue.empty()) //无满足路径return 0;}return 1;}void Wiring::PrintPath(){position here, near; //当前位置和相邻的一个位置int length = grid[finish.row][finish.column] - 1; //最优路径长度here = finish;for(int i = length-1; i > 0; i--) //找前趋位置{grid[here.row][here.column] = -1; //表示在路径上for(int j = 0; j < 4; j++){near = here + nextstep[j];if(grid[near.row][near.column] == i+1) //找到前趋break;}here = near; //向前移动}for(int i = 1; i <= n; i++){int j;for(j = 1; j <= m; j++){if(grid[i][j] == -1) //表示路径fout << "*\t\t";elsefout << grid[i][j] << "\t\t";}fout << endl;}}void Wiring::PrintFail(){fout << "No Path!" << endl;}/*主函数文件 test.cpp*/#include "布线问题.h"int main(){char *in = "input.txt"; //输入文件char *out = "output.txt"; //输出文件Wiring wiring(in, out); //文件初始化线路板wiring.Solve(); //求解布线问题return 0;}(注:可编辑下载,若有不当之处,请指正,谢谢!)。

相关文档
最新文档