- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最短权路径
用于计算一个节点到其他所有节点最短路径。主要特点是以任一起始点为原点,沿权值最小的路径向其它节点扩展,直到将全部节点包含进最小路径集。
基本思想
已知图?G=(V,E),我们希望找出从某任一结点Vi∈V到V中的每个结点的最短路径。
先任取一点V0,选择V0到周边各点中最短路径的一点V1,将d(V0,V1)加入最短路径集d(S),V1加入点集S,然后选择V1到周边各点中最短路径?[1]?的一点V2,将d(V0,V2)加入最短路径集d(S),V2加入点集S,如此不断将新点和最短路径加入点集和最短路径集,直到Vk只有到点集S={V0,V1,……,Vk-1,Vk}的路径,这时将Vk-1选作起点,看有没有到除去点集S={V0,V1,……,Vk-1,Vk}其他点的最短路径,如果有将d(Vk-1,Vk+1)加入最短路径集d(S),Vk+1加入点集S,如果没有选择Vk-2作为起点,再看有没有到除去点集S={V0,V1,……,Vk-1,Vk}其他点的最短路径,如此反复,直到S点集包含全部点并且最后一条路径是从点集{V0,V1,……,Vn-1,Vn}到{V0,V1,……,Vn-1,Vn}。任意两点Vi, Vj最短权路径取最短路径集两点所经过点的最短路径和与两点直接路径的最小值即D(Vi, Vj)=min{
??
,d(Vi, Vj)}
举例
一公司在六个城市c1,c2,…,c6中的每一个都有分公司。从ci到cj的班机旅费由下列矩阵中的第i行第j列元素给出(∞表示没有直接班机):
0 ∞ 5? 30 ∞ ∞
2 0 ∞ ∞ 8? ∞
∞? 15 0 ∞ ∞ 7
∞ ∞ ∞ 0 ∞ ∞
∞ ∞? ∞ 4 0 ∞
∞ ∞ ∞? 10 18 0
最短权路径测试程序代码:
#include stdio.h
#include malloc.h
typedef char DataType;
#define MaxSize 10
#define MaxVertices 10
#define MaxWeight 10000
#include SeqList.h
#include AdjMGraph.h
#include WangJian.h
void main(void)
{
AdjMGraph g;
char a[]={A,B,C,D,E,F};
RowColWeight rcw[]={{0,2,5},{0,3,30},{1,0,2},{1,4,8},{2,1,15},{2,5,7},{4,3,4},{5,3,10},{5,4,18}};
int i,n=6,e=9;
int distance[6],path[6];
CreatGraph(g,a,n,rcw,e);
WangJian(g,0,distance,path);
for(i=0;in;i++)
printf(到顶点%c的最短距离为%d\n,g.Vertices.list[i],distance[i]);
printf(从顶点%c到其他各顶点最短路径的前一顶点为:\n,g.Vertices.list[0]);
for(i=0;in;i++)
if(path[i]!=-1)
printf(到顶点%c的前一顶点为%c\n,g.Vertices.list[i],g.Vertices.list[path[i]]);
}
包含的顺序表的头文件代码:
#define MaxSize 10
#define MaxVertices 10
#define MaxWeight 10000
typedef char DataType;
typedef struct
{
DataType list[MaxSize];
int size;
} SeqList;
void ListInitiate(SeqList *L)
{
L-size=0;
}
int ListLength(SeqList L)
{
return L.size;
}
int ListInsert(SeqList *L,int i,DataType x)
{
int j;
if(L-size=MaxSize)
{
printf(顺序表已满无法插入!\n);
return 0;
}
else if(i0||iL-size)
{
printf(参数i不合法!\n);
return 0;
}
else
{
for(j=L-size;ji;j--) L-list[j]=L-list[j-1];
L-list[i]=x;
L-size++;
return 1;
}
}
int
您可能关注的文档
- 撞针线方程(参数方程).doc
- 记序排序(最快排序).doc
- 插入排序(最快排序).doc
- 球坐标系下三角函数公式.doc
- 球坐标系下坐标变换.doc
- 广东省清远市连山县2024-2025学年上学期期中检测七年级地理试题.pdf
- 2024-2025学年北京市通州区高二上学期期中考试物理试题(含答案).pdf
- 2024-2025学年第一学期九年级期中考试英语试卷.pdf
- 2024-2025学年广东省梅州市梅雁中学高三(上)期中物理试卷(含答案).pdf
- 2024-2025学年上学期期中考试历史试题卷.pdf
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)