计算机等级考试—Dijkstra(戴克斯特拉)& Kruskal(克鲁斯卡尔)—东方仙盟

Dijkstra(戴克斯特拉)& Kruskal(克鲁斯卡尔)核心特点 + 核心区别

超市管理场景类比,纯干货无废话,记牢 3 个核心点就能分清,今天直接吃透!

一、先明确:俩算法解决的问题完全不同(基础必记)

  • Dijkstra(戴克斯特拉) :解决单源最短路径 → 比如从超市入口(起点 A)到各个货架 / 收银台(其他节点),找每条路的最短距离,关注「点到点的最短路径」。
  • Kruskal(克鲁斯卡尔) :解决最小生成树 → 比如给超市所有货架(节点)装连接的传送带(边),要求传送带总长度最短,且所有货架都连通、不绕圈(无环),关注「全连通的最小总代价」。

二、各自核心特点(按考试考点提炼,记死!)

📌 Dijkstra(戴克斯特拉)算法
  1. 核心策略 :贪心,每次选「当前离起点最近的未访问节点」,以它为跳板更新其他节点到起点的距离,逐步扩散到所有节点。
  2. 适用场景边的权值必须非负(比如距离、费用不能是负数,超市里不可能有 "负距离" 的路);有向 / 无向图都能用,主打「单源(一个起点)」最短路径。
  3. 关键操作 :维护一个距离数组(记录每个节点到起点的当前最短距离),不断更新、选最小节点,直到所有节点都访问完。
  4. 超市例子:从入口 A 到果蔬区 E,先找离 A 最近的零食区 C(1 米),再从 C 更新区到 E 的距离;再找次近的饮料区 D(2 米),再从 D 更新,最终找到 A 到 E 的最短路。
📌 Kruskal(克鲁斯卡尔)算法
  1. 核心策略 :贪心,每次选「权值最小的边」,如果这条边连的两个节点没连通(不形成环),就选它,直到所有节点都连通。
  2. 适用场景无向图(传送带双向连,不存在单向边);边的权值可正可负,主打「无向图的最小生成树」,不关心起点,只关心全连通的最小总代价。
  3. 关键操作 :把所有边按权值从小到大排序 ,用并查集(快速判断两个节点是否连通,避免环),依次选边、合并节点,直到选够「节点数 - 1」条边(n 个节点的生成树必是 n-1 条边)。
  4. 超市例子:给 8 个货架装传送带,先选 1 米的 A-C 传送带,再选 2 米的 D-F 传送带,再选 3 米的 B-E 传送带... 只要不绕圈就选,直到 8 个货架都连起来,总长度最短。

三、最核心区别(一张表搞定,考试不会混)

对比项 Dijkstra(戴克斯特拉) Kruskal(克鲁斯卡尔)
解决问题 单源最短路径(一个起点→所有点) 无向图最小生成树(全连通最小代价)
贪心对象 选节点(当前离起点最近的) 选边(当前权值最小的)
核心工具 距离数组 + 选最小节点 边排序 + 并查集(避环)
边权要求 必须非负 无要求(正 / 负都可)
图的类型 有向 / 无向图都可 仅无向图
核心目标 找「点到点的最短距离」 找「全连通的最小总权值」

四、一句话速记(刻脑子里)

  • 戴克斯选点找最短,边权不能负,有向无向都能搞;
  • 克鲁斯选边连全图,只认无向图,并查集来防绕圈

阿雪技术观

在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者。无论是分享代码、撰写技术博客,还是参与开源项目维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基生命,为科技进步添砖加瓦。

Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets, hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up

相关推荐
大闲在人4 小时前
8. 供应链与制造过程术语:产能
算法·制造·供应链管理·智能制造·工业工程
一只小小的芙厨5 小时前
寒假集训笔记·以点为对象的树形DP
c++·算法
历程里程碑5 小时前
普通数组----合并区间
java·数据结构·python·算法·leetcode·职场和发展·tornado
执风挽^5 小时前
Python基础编程题2
开发语言·python·算法·visual studio code
Z9fish5 小时前
sse哈工大C语言编程练习20
c语言·开发语言·算法
晓13135 小时前
第六章 【C语言篇:结构体&位运算】 结构体、位运算全面解析
c语言·算法
iAkuya5 小时前
(leetcode)力扣100 61分割回文串(回溯,动归)
算法·leetcode·职场和发展
梵刹古音5 小时前
【C语言】 指针与数据结构操作
c语言·数据结构·算法
VT.馒头5 小时前
【力扣】2695. 包装数组
前端·javascript·算法·leetcode·职场和发展·typescript
CoderCodingNo7 小时前
【GESP】C++五级练习题 luogu-P1865 A % B Problem
开发语言·c++·算法