wordpress建站 图片能在家做的兼职的网站

张小明 2026/1/19 20:28:36
wordpress建站 图片,能在家做的兼职的网站,兰州网站seo技术厂家,网站外的seo本文献给#xff1a; 已掌握无向图基础#xff0c;希望理解如何在带权图中找到两点间最短路径的C语言学习者。本文将系统讲解两种经典的最短路径算法。 你将学到#xff1a; 最短路径问题的定义与核心概念Dijkstra算法#xff1a;解决单源、非负权图的最短路径Bellman-For…本文献给已掌握无向图基础希望理解如何在带权图中找到两点间最短路径的C语言学习者。本文将系统讲解两种经典的最短路径算法。你将学到最短路径问题的定义与核心概念Dijkstra算法解决单源、非负权图的最短路径Bellman-Ford算法处理单源、含负权边的最短路径算法对比与实战应用目录第一部分问题定义与核心概念1. 什么是最短路径第二部分图的存储带权图第三部分Dijkstra算法1. 核心思想2. 算法步骤朴素O ( ∣ V ∣ 2 ) O(|V|^2)O(∣V∣2)实现/b3. C语言实现第四部分Bellman-Ford算法1. 核心思想2. 算法步骤3. C语言实现第五部分总结与对比算法对比表选择指南第一部分问题定义与核心概念1. 什么是最短路径在带权无向图G ( V , E , w ) G (V, E, w)G(V,E,w)中w : E → R w: E \rightarrow \mathbb{R}w:E→R为边权函数。从源点s ss到目标t tt的路径P ( s , v 1 , . . . , v k , t ) P (s, v_1, ..., v_k, t)P(s,v1​,...,vk​,t)的长度为路径上所有边权之和d i s t ( P ) ∑ i 0 k w ( v i , v i 1 ) dist(P) \sum_{i0}^{k} w(v_i, v_{i1})dist(P)i0∑k​w(vi​,vi1​)最短路径是所有s ss到t tt路径中长度最小的路径。关键术语单源最短路径求从一个源点s ss到图中所有其他顶点的最短距离。权值可正、可负实际问题中常为非负如距离、时间、成本。松弛操作最短路径算法的核心操作通过考察一条边来更新当前的最短距离估计。第二部分图的存储带权图在基础邻接矩阵/邻接表上需要增加权值信息。#defineMAX_V100#defineINF0x3f3f3f3f// 表示“无穷大”的一个较大数值// 邻接矩阵带权typedefstruct{intmatrix[MAX_V][MAX_V];// 存储权值INF表示无边intvertex_count;}GraphMatrixWeighted;voidinit_graph_weighted(GraphMatrixWeighted*g,intn){g-vertex_countn;for(inti0;in;i){for(intj0;jn;j){g-matrix[i][j](ij)?0:INF;// 自身距离为0}}}voidadd_edge_weighted(GraphMatrixWeighted*g,intu,intv,intweight){if(ug-vertex_count||vg-vertex_count)return;g-matrix[u][v]weight;g-matrix[v][u]weight;// 无向图}第三部分Dijkstra算法1. 核心思想贪心策略。维护一个集合S SS包含已确定最短距离的顶点。每次从未确定的顶点中选择距离源点s ss最近的顶点u uu加入S SS并用u uu来松弛其所有邻居的距离。要求所有边权非负。算法正确性依赖当边权非负时当前未确定顶点中距离最小的顶点其距离不可能再被其他未确定的顶点更新减小。2. 算法步骤朴素O ( ∣ V ∣ 2 ) O(|V|^2)O(∣V∣2)实现初始化dist[s] 0dist[v] INFv ≠ svisited[v] false。循环|V|次a. 找到未访问顶点中dist最小的顶点u。b. 标记u为已访问 (visited[u] true)。c.松弛操作对u的每个邻居v如果dist[u] w(u, v) dist[v]则更新dist[v] dist[u] w(u, v)。循环结束dist[]数组即为源点到各点的最短距离。3. C语言实现// Dijkstra算法 (邻接矩阵朴素实现)voiddijkstra(GraphMatrixWeighted*g,intsrc,intdist[]){intvisited[MAX_V]{0};// 初始化for(inti0;ig-vertex_count;i){dist[i]INF;}dist[src]0;for(intcount0;countg-vertex_count;count){// 步骤1: 找到未访问的dist最小顶点intu-1;intmin_distINF;for(intv0;vg-vertex_count;v){if(!visited[v]dist[v]min_dist){min_distdist[v];uv;}}if(u-1)break;// 剩余顶点不可达visited[u]1;// 步骤2: 松弛u的所有邻居for(intv0;vg-vertex_count;v){if(!visited[v]g-matrix[u][v]!INF){intnew_distdist[u]g-matrix[u][v];if(new_distdist[v]){dist[v]new_dist;}}}}}算法复杂度时间复杂度O ( ∣ V ∣ 2 ) O(|V|^2)O(∣V∣2)适合稠密图。空间复杂度O ( ∣ V ∣ ) O(|V|)O(∣V∣)。优化方向使用**优先队列最小堆**可将时间复杂度降为O ( ( ∣ V ∣ ∣ E ∣ ) log ⁡ ∣ V ∣ ) O((|V||E|) \log |V|)O((∣V∣∣E∣)log∣V∣)适合稀疏图。第四部分Bellman-Ford算法1. 核心思想动态规划/松弛。通过对所有边进行∣ V ∣ − 1 |V|-1∣V∣−1轮松弛操作逐步逼近最短路径。可以处理负权边并能检测出图中是否存在从源点可达的负权环。原理在无负权环的图中任意两点间的最短路径最多包含∣ V ∣ − 1 |V|-1∣V∣−1条边。因此通过∣ V ∣ − 1 |V|-1∣V∣−1轮全局松弛足以找到所有最短路径。2. 算法步骤初始化dist[s] 0dist[v] INFv ≠ s。进行∣ V ∣ − 1 |V|-1∣V∣−1轮迭代每轮遍历图中的所有边( u , v ) (u, v)(u,v)。对每条边执行松弛操作如果dist[u] w(u, v) dist[v]则更新dist[v] dist[u] w(u, v)。负权环检测再进行一轮所有边的遍历。如果仍有边能被松弛则说明图中存在从源点可达的负权环最短路径无意义。3. C语言实现// Bellman-Ford算法 (使用边列表存储图更合适此处为演示使用邻接矩阵遍历所有边)voidbellman_ford(GraphMatrixWeighted*g,intsrc,intdist[]){// 初始化for(inti0;ig-vertex_count;i){dist[i]INF;}dist[src]0;// 步骤1: 进行 |V|-1 轮松弛for(inti0;ig-vertex_count-1;i){// 遍历所有边 (u, v)for(intu0;ug-vertex_count;u){for(intv0;vg-vertex_count;v){if(g-matrix[u][v]!INF){// 存在边intnew_distdist[u]g-matrix[u][v];if(new_distdist[v]){dist[v]new_dist;}}}}}// 步骤2: 检测负权环 (可选如果需要检测)for(intu0;ug-vertex_count;u){for(intv0;vg-vertex_count;v){if(g-matrix[u][v]!INFdist[u]g-matrix[u][v]dist[v]){printf(图中存在从源点可达的负权环\n);return;}}}}算法复杂度时间复杂度O ( ∣ V ∣ ⋅ ∣ E ∣ ) O(|V| \cdot |E|)O(∣V∣⋅∣E∣)使用邻接矩阵为O ( ∣ V ∣ 3 ) O(|V|^3)O(∣V∣3)使用边列表为O ( ∣ V ∣ ⋅ ∣ E ∣ ) O(|V| \cdot |E|)O(∣V∣⋅∣E∣)。空间复杂度O ( ∣ V ∣ ) O(|V|)O(∣V∣)。第五部分总结与对比算法对比表特性Dijkstra算法Bellman-Ford算法适用图类型非负权图任意图可含负权边核心思想贪心动态规划/松弛时间复杂度O ( ∣ V ∣ 2 ) O(|V|^2)O(∣V∣2)或O ( ( ∣ V ∣ ∣ E ∣ ) log ⁡ ∣ V ∣ ) O((|V||E|)\log|V|)O((∣V∣∣E∣)log∣V∣)O ( ∣ V ∣ ⋅ ∣ E ∣ ) O(|V| \cdot |E|)O(∣V∣⋅∣E∣)空间复杂度O ( ∣ V ∣ ) O(|V|)O(∣V∣)O ( ∣ V ∣ ) O(|V|)O(∣V∣)功能求单源最短路径求单源最短路径可检测负权环优点在非负权图中效率高功能强大适用范围广缺点不能处理负权边时间复杂度高选择指南绝大多数情况边权非负优先使用Dijkstra算法尤其是堆优化版本。例如道路导航、网络路由。图含有负权边必须使用Bellman-Ford算法。例如金融套利模型、某些特殊约束问题。需要检测负权环使用 Bellman-Ford 算法。觉得文章有帮助别忘了 点赞 - 给我一点鼓励⭐ 收藏 ⭐- 方便以后查看 关注 - 获取更新通知标签#C语言#图论#最短路径#Dijkstra#Bellman-Ford#算法
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

南阳网站建设青海营销网站建设多少钱

基于用户反馈自动优化检索模型权重参数 在构建企业级智能问答系统时,一个常见的尴尬场景是:知识库明明包含了答案,但系统却“视而不见”——用户提问后返回了一堆无关文档,最终生成的回答也似是而非。这种问题背后,往…

张小明 2026/1/17 20:41:04 网站建设

网站标题在线制作缅甸做菠菜网站

泛函分析中的弱收敛、闭子空间与希尔伯特空间 1. 弱序列收敛 在测度空间 $(X, M, \mu)$ 中,对于 $1 \leq p < \infty$,设 $p$ 和 $q$ 为共轭指标。若函数序列 ${f_n}$ 满足 $|f_n - f|_p \to 0$,即 $\int_X |f_n - f|^p d\mu \to 0$,则称 ${f_n}$ 依 $L^p(\mu)$ 范数收…

张小明 2026/1/17 20:41:04 网站建设

网站规范化建设oss可以做网站根目录吗

下面内容摘录自《用R探索医药数据科学》专栏文章的部分内容&#xff08;原文5050字&#xff09;。 2篇2章13节&#xff1a;R语言中Stringr扩展包进行字符串的查阅、大小转换和排序_r语言stringi包-CSDN博客 R语言是数据科学和统计分析的强大工具&#xff0c;尤其在处理字符串数…

张小明 2026/1/17 20:41:05 网站建设

佛山住房和城乡建设厅网站新网站怎么快速收录必做

你是否曾经在清晨被刺耳的广告闹钟惊醒&#xff1f;或者因为找不到合适的计时工具而错过重要的会议&#xff1f;在这个充斥着各种复杂应用的时代&#xff0c;我们需要的其实很简单——一个纯净、可靠的时间管理助手。Simple Clock正是这样一款应用&#xff0c;它集世界时钟、闹…

张小明 2026/1/17 20:41:05 网站建设

承包酒席可以做网站吗商城域名注册多少钱

Node-ESC/POS 终极指南&#xff1a;快速掌握 Node.js 打印机控制技术 【免费下载链接】node-escpos &#x1f5a8;️ ESC/POS Printer driver for Node.js 项目地址: https://gitcode.com/gh_mirrors/no/node-escpos 在现代商业应用中&#xff0c;POS打印机是不可或缺的…

张小明 2026/1/17 20:41:09 网站建设

如何用自己的域名做网站合肥定制网站建设公司

如何将 Excalidraw 嵌入你的内部知识管理系统 在技术团队的日常协作中&#xff0c;你是否经历过这样的场景&#xff1a;一场需求评审会上&#xff0c;大家对着干巴巴的文字文档反复确认逻辑边界&#xff0c;却始终无法对齐系统架构的理解&#xff1f;有人提议“画个图吧”&…

张小明 2026/1/17 20:41:09 网站建设