对生成的子网进行连通性检测、补正的源代码.docx

对生成的子网进行连通性检测、补正的源代码.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

??

?

??

对生成的子网进行连通性检测、补正的源代码

?

??

?

?

?

?

?

?

?

???

?

?

?

?

?

由于在阈值较大时,节点个数较少,生成的子图不连通;此外压缩时有时会生成一些孤立的点或连通分支,为此必须适当地降低阈值,添加一些关节点,进行连通性补正,以保证后续求最短路径的工作能在一个连通的子图上进行。其实现代码如下。

(主流程控制部分)

……

for(inti=0;i<pMainFrame->connectivitys.destNodesNum;i++)

pMainFrame->connectivitys.weights[i]=1.0;

pMainFrame->connectivitys.calculateThresholdSpan();

pMainFrame->connectivitys.calculateDistribute();

CDialogThresholddlg;

dlg.DoModal();

//按阈值压缩地图

pMainFrame->pressMap();

//将对压缩后的子图进行连通性检测

if(pMainFrame->connectivitys.testConnectivity())

AfxMessageBox(_T(“压缩后的子图连通”));

else{

CStringstr;

str.Format(“子图有%d个连通分支”,pMainFrame->connectivitys.groupNum);

AfxMessageBox(_T(str));

}

//对压缩后的子图进行连通性补正

if(pMainFrame->connectivitys.fixConnect)

pMainFrame->connectivitys.fixConnectivity();

//将压缩后的元素ID加入数组中

m_selNodeIDs.RemoveAll();

for(i=0;i<pMainFrame->connectivitys.totalNodeNum;i++){

if(pMainFrame->connectivitys.selectSet_Node[i])

m_selNodeIDs.Add(i);

}

m_selArcIDs.RemoveAll();

for(i=0;i<pMainFrame->connectivitys.totalArcNum;i++){

if(pMainFrame->connectivitys.selectSet_Arc[i])

m_selArcIDs.Add(i);

}

……

//对多尺度变换得到的子图进行连通性检测

boolConnectivitys::testConnectivity()

{

//先将所有节点的连通分支组号初始化为0

groupNum=0;

for(inti=0;i<totalNodeNum;i++)

group[i]=0;

//检测子网有几个连通分支

for(i=0;i<totalNodeNum;i++)

//如果节点在变换后的子图节点集内,并且不属于已有的连通分支,则以此

//节点为根进行宽度优先有哪些信誉好的足球投注网站,并对得到的新连通分支节点赋予新的组号

if(selectSet_Node[i](group[i]==0)){

groupNum++;

BFS(i,groupNum);

}

//返回连通性检测结果

if(groupNum==1)//只有一个连通分支,即整个子网是连通的

returntrue;

else//否则有多个连通分支,子网不连通

returnfalse;

}

//以某一节点为根在子网内进行宽度优先有哪些信誉好的足球投注网站,

//并对得到的连通分支节点赋予参数指定的组号

voidConnectivitys::BFS(intstartID,intgroupNum)

{

typedefCTypedPtrList<CPtrList,int*>CIntPtrList;

CIntPtrListunExploredNodes;

POSITIONpos;

intcurrID,otherID;

int*pCurrID=NULL,*pOtherID=NULL;

//将起始节点赋予参数指定的组号

group[sta

文档评论(0)

135****7186 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档