上一页 1 2 3 4 5 6 7 8 9 ··· 17 下一页
摘要: 贪心算法看似完全出于直觉,可解决许多问题。但实际上,“贪心”二字在日常生活中却是贬义的。我们从小就被教育“贪心短视”,但为什么在某些算法中,贪心的“短视”反而能直达全局最优?哪些问题可以适用贪心,哪些不可以呢? 贪心算法 作为程序员,你一定遇到过这样的困惑: 最小生成树问题(Kruskal算法)用贪 阅读全文
posted @ 2025-02-17 22:46 Ofnoname 阅读(662) 评论(0) 推荐(1)
摘要: Floyd-Warshall算法可以求解出图内任意两点的最短路径,适用于稠密图,但时间复杂度为 \(O(n³)\);Dijkstra算法求解单源最短路径的时间复杂度为 \(O(m + n log n)\),对每个节点都做一次,也可以达成全源最短路径,但是这个方法仅适用于非负权边图。 Johnson 阅读全文
posted @ 2025-02-17 10:16 Ofnoname 阅读(278) 评论(0) 推荐(1)
摘要: Dijkstra 的局限性 在带权图的最短路径问题中,我们的目标是从一个起点出发,找到到达其他所有节点的最短路径。无论是交通导航中的最短耗时路线,还是金融网络中的最小成本路径,这一问题的核心始终是如何在复杂权重关系中寻找最优解。 经典算法Dijkstra凭借其贪心策略和优先队列优化,成为解决非负权图 阅读全文
posted @ 2025-02-16 20:50 Ofnoname 阅读(287) 评论(0) 推荐(0)
摘要: 最短路径问题是图论中最经典且重要的应用问题之一。它的目标是找到一个图中从起点到终点的最短路径,即在所有可能的路径中,选择一条边权和最小的路径。该问题广泛存在于多个实际场景中,比如交通运输、通信网络、导航系统等。 在实际生活中,很多情况都涉及到寻找最短路径。例如,导航系统需要为用户推荐从当前位置到目的 阅读全文
posted @ 2025-02-16 12:30 Ofnoname 阅读(391) 评论(0) 推荐(2)
摘要: 上期回顾:https://www.cnblogs.com/ofnoname/p/18715203 在前文中,我们剖析了最小生成树(MST)问题中的两大经典算法: Kruskal 以“边权平等”为信条,通过排序与并查集自下而上聚合连通分量; Prim 以“中心辐射”为策略,通过优先队列自上而下扩张领土 阅读全文
posted @ 2025-02-15 11:29 Ofnoname 阅读(387) 评论(2) 推荐(1)
摘要: 最小生成树问题 想象你是一位城市规划师,面前摊开一张地图,标记着散落的村庄。你的任务是用最经济的成本,在村庄间铺设道路,让所有村庄互通。这个问题看似简单,却隐藏着一个经典的数学命题:如何在一张“带权图”中,找到一棵总权重最小的树,连接所有节点? 数学定义 给定一个连通无向图 \(G=(V,E)\), 阅读全文
posted @ 2025-02-14 17:04 Ofnoname 阅读(261) 评论(0) 推荐(0)
摘要: 上期回顾:https://www.cnblogs.com/ofnoname/p/18678895 之前我们已经介绍了最大流问题的基本定义,让从源点流出的总流量达到最大,同时不违反任何管道的运输能力限制。学习了最大流最小割定理、增广路径与残量网络的构建方法,以及如何利用这些概念实现 EK 算法。EK 阅读全文
posted @ 2025-02-13 21:16 Ofnoname 阅读(244) 评论(0) 推荐(0)
摘要: 在图论中,子图是由原图的一部分节点和这些节点之间的边构成的图。图的密度通常是指图中边的数量与节点的数量之比。形式化地,对于一个图 $ H = (V, E) $,其密度定义为: \[\text{密度}(H) = \frac{|E|}{|V|} \]其中,$ |E| $ 表示图 $ H $ 中的边的数量 阅读全文
posted @ 2025-02-13 13:39 Ofnoname 阅读(218) 评论(0) 推荐(0)
摘要: 上期回顾:https://www.cnblogs.com/ofnoname/p/18678895 之前我们已经介绍了最大流问题的基本定义、最大流最小割定理、增广路径与残量网络的构建方法,以及如何利用这些概念实现 EK 算法。EK 算法通过每次使用 BFS 寻找从源点到汇点的最短增广路径,保证了算法在 阅读全文
posted @ 2025-02-04 18:07 Ofnoname 阅读(321) 评论(0) 推荐(2)
摘要: 在 C++ 标准模板库(STL)中,std::lower_bound 和 std::upper_bound 是两个强大的二分查找函数,适用于 有序范围(如 std::vector、std::set 或 std::map)。这两个函数可以帮助我们快速找到元素的位置,支持高效的插入、统计和查找操作。 l 阅读全文
posted @ 2025-01-31 13:00 Ofnoname 阅读(1798) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 17 下一页