|
阅读:1792回复:6
欢迎用过Mo网络分析模块的同志发表意见!放出例子让大家分享!
欢迎用过Mo网络分析模块的同志发表意见!放出例子让大家分享!
|
|
|
|
1楼#
发布于:2004-09-27 15:34
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
|
|
|
2楼#
发布于:2004-09-27 18:05
<P>短短的</P>
[此贴子已经被作者于2004-9-29 18:11:01编辑过]
|
|
|
|
3楼#
发布于:2004-09-28 00:01
无聊
|
|
|
4楼#
发布于:2004-09-29 20:23
<img src="images/post/smile/dvbbs/em10.gif" /><img src="images/post/smile/dvbbs/em10.gif" /><img src="images/post/smile/dvbbs/em10.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
|
|
|
|
5楼#
发布于:2004-09-30 08:42
<P>两种最短路径的算法VC++程序</P>
<P>double CMoPathFindView::Dijkstra(int iSNode, int iTNode, int Path[]) { //GraphÁÚ½Ó¾ØÕ󣬸¡µãÐÍ int i, j, w, mark[MAX_VERTEX]; double minc, dbDist[MAX_VERTEX];</P> <P>//±êʶËùÓнáµã¾ùδÀú±é for (i=0;i<m_Graph.nodeNum;i++) mark=0;</P> <P>// for (i=0;i<m_Graph.nodeNum;i++) { dbDist = m_Graph.arcLength[iSNode]; Path = iSNode; } //±êʶÆðµãµÄÏà¹Ø²ÎÊý mark[iSNode] =1; Path[iSNode] =0; dbDist[iSNode] =0.0;</P> <P>double dbInfinity=INFINITY;</P> <P> for (i=1;i<m_Graph.nodeNum;i++) { minc=INFINITY; w=0; //ÒÔViΪÆðµã£¬ËÑË÷¾àÀëViµÄ×îСµÄ¶¥µã for (j=0;j<m_Graph.nodeNum;j++) if ((mark[j]==0) ;; (minc>=dbDist[j])) { minc=dbDist[j]; //¼Ç¼×îС¾àÀë w=j; //¼Ç¼¾àÀë×îС¶¥µã }</P> <P> mark[w]=1; for (j=0;j<m_Graph.nodeNum;j++) if ((mark[j]==0) ;; (dbDist[j] > (dbDist[w]+m_Graph.arcLength[w][j])) ;; (m_Graph.arcLength[w][j] != dbInfinity)) { dbDist[j]=dbDist[w]+m_Graph.arcLength[w][j]; Path[j]=w; } } return dbDist[iTNode]; } </P> <P>double CMoPathFindView::BellmanFord(int iSNode, int iTNode, int Path[]) { //GraphÁÚ½Ó¾ØÕ󣬸¡µãÐÍ int i, j, k; double dbDist[MAX_VERTEX]; double dbInfinity=INFINITY;</P> <P>//±êʶËùÓнáµã¾ùδÀú±é for (i=0;i<m_Graph.nodeNum;i++) { dbDist = dbInfinity; Path = 0; } //±êʶÆðµãµÄÏà¹Ø²ÎÊý dbDist[iSNode] =0.0;</P> <P> for (k=1;k<m_Graph.nodeNum;k++) for (i=0;i<m_Graph.nodeNum;i++) for (j=0;j<m_Graph.nodeNum;j++) if (dbDist[j]>dbDist+m_Graph.arcLength[j]) { dbDist[j]=dbDist+m_Graph.arcLength[j]; Path[j]=i; }</P> <P>for (i=0;i<m_Graph.nodeNum;i++) for (j=0;j<m_Graph.nodeNum;j++) if (dbDist[j]>dbDist+m_Graph.arcLength[j]) return 0;</P> <P> return dbDist[iTNode]; }</P> <P>请指正!</P> [此贴子已经被作者于2004-9-30 8:45:53编辑过]
|
|
|
6楼#
发布于:2004-09-30 08:44
<P>我是用数组来定义图的邻接矩阵,感觉比较笨,一直想用其它更好的方式解决,但一直没有时间
</P> <P>//¶¨ÒåͼµÄÁÚ½Ó¾ØÕóÀàÐÍ // typedef struct Graph { int nodeID[MAX_VERTEX]; //用数组来保存结点 CMoPoint moNode[MAX_VERTEX]; //´æ´¢¶¥µãµÄShape double arcLength[MAX_VERTEX][MAX_VERTEX]; //´æ´¢»¡¶Î³¤¶È int nodeNum; //´æ´¢¶¥µã×ÜÊý int arcsNum; //´æ´¢»¡¶Î×ÜÊý } GraphTp; </P> <P>GraphTp m_Graph;</P> [此贴子已经被作者于2004-9-30 8:51:52编辑过]
|
|