计算机等级考试—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

相关推荐
Hcoco_me2 小时前
大模型面试题89:GPU的内存结构是什么样的?
人工智能·算法·机器学习·chatgpt·机器人
N.D.A.K2 小时前
CF2138C-Maple and Tree Beauty
c++·算法
im_AMBER2 小时前
Leetcode 104 两两交换链表中的节点
笔记·学习·算法·leetcode
程序员-King.2 小时前
day159—动态规划—打家劫舍(LeetCode-198)
c++·算法·leetcode·深度优先·回溯·递归
小雨下雨的雨2 小时前
禅息:在鸿蒙与 Flutter 之间寻找呼吸的艺术
算法·flutter·华为·重构·交互·harmonyos
浅念-2 小时前
C语言——单链表
c语言·开发语言·数据结构·经验分享·笔记·算法·leetcode
hans汉斯2 小时前
建模与仿真|基于GWO-BP的晶圆机器人大臂疲劳寿命研究
大数据·数据结构·算法·yolo·机器人·云计算·汉斯出版社
wazmlp0018873692 小时前
python第一次作业
开发语言·python·算法
Miqiuha2 小时前
二次散列学习
学习·算法·哈希算法