新发现或大错误!!高手看看,starfish别漏了。

jerry_baimor jerry_baimor 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
因为好多聪明多的人都推荐Dij,floyd算法,而我又不聪明,所以我的一定有错。

已知:用十字链表存储的有向网络,弧的权值存在ArcBox里。
求解:从给定原点(eg. v0)到其余顶点的最短路径。
解:用Broadth_first_search,
by way of
队列queue
辅助数组
int _priorVex[MAX_VERTEX_NUM+1]; 纪录当前最短路径本节点的立即前驱节点的下标
int _shortPath[MAX_VERTEX_NUM+1]; 记录本节点的当前最短路径的权值

算法:假设所定原点是v0
enqueue(v0);
while(queue not empty){
p=dequeue();
for(q=p.firstout;q;q=p.nextout(q)){
if(_shortPath(p)+weight(p,q) < _shortPath(q)){
_shortPath(q) := _shortPath(p)+weight(p,q);
_priorVex(q)=p;
if(q is not in queue){
enqueue(q);
}
}
}
}


我的考虑是:
假设v0...v1...v2是v0到v2的最短路径,那么可以断言
此中的v0...v1是v0到v1的最短路径(反证法)
而此路径中的任意一点都对应一条弧,弧又对应于<tail,head>。
对应于顶点v,若它的_shortPath改变了(定由于某条进入它的弧引起的变化),那么以v为弧尾的弧的弧头都应看看有没有变化,所以
if(q is not in queue){
enqueue(q);
}


我还有源代码,谁有兴趣请留下mail,谢谢。
...全文

相关推荐

Linux系统应用与开发教程PPT

Linux系统应用与开发教程PPT

net_temp

Windows 11本地部署Langchain-Chatchat私有知识库全指南

私有知识库是企业构建可审计、可追溯、数据不出域的智能问答系统的核心基础设施。其技术原理基于RAG(检索增强生成)架构,通过文档解析、语义分块、向量嵌入(如bge-large-zh-v1.5)、FAISS向量检索与大模型生成闭环实现‘所问即所得’。该方案的技术价值在于兼顾安全性(纯本地运行)、中文友好性(jieba分词+PDF页级溯源)与商用可行性(Apache-2.0协议),适用于法务合规查询、员工手册问答、行业标准检索等典型场景。本文聚焦Langchain-Chatchat在Windows 11环境下的端

dduvk21111

《嵌入式Linux应用开发教程》PPT

《嵌入式linux应用开发教程》华清远见嵌入式学院 赵苍明 穆煜 编著 人民邮电出版社 ISBN 9787115209047/TP

superduxingxia

Linux系统应用与开发教程PPT....................

Linux系统应用与开发教程PPT..........................

cclsw07

Python轻量级Web日志分析工具:从正则解析到可视化报告实战

日志分析是运维和开发中的基础工作,它通过对服务器日志进行收集、解析和统计,帮助开发者监控系统状态、排查故障和优化性能。其核心原理在于将非结构化的日志文本转化为结构化的数据,进而通过聚合计算提取关键指标。这项技术的价值在于能够快速定位问题、洞察用户行为,并辅助安全分析,广泛应用于网站流量监控、API性能调优和安全威胁检测等场景。本文以Python为核心,详细介绍了如何构建一个轻量级的命令行日志分析工具,重点探讨了使用正则表达式进行高效解析、利用collections模块进行流式统计,以及通过Jinja2模板生

hidetobj
评论 13
收藏 已收藏
分享
返回顶部