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

相关推荐
努力也学不会java12 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
旖-旎12 小时前
二分查找(x的平方根)(4)
c++·算法·二分查找·力扣·双指针
ECT-OS-JiuHuaShan12 小时前
朱梁万有递归元定理,重构《易经》
算法·重构
智者知已应修善业13 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
khddvbe13 小时前
C++并发编程中的死锁避免
开发语言·c++·算法
C羊驼13 小时前
C语言:两天打鱼,三天晒网
c语言·经验分享·笔记·算法·青少年编程
菜菜小狗的学习笔记14 小时前
剑指Offer算法题(四)链表
数据结构·算法·链表
myloveasuka14 小时前
[Java]查找算法&排序算法
java·算法·排序算法
清水白石00814 小时前
Free-Threaded Python 实战指南:机遇、风险与 PoC 验证方案
java·python·算法
We་ct14 小时前
LeetCode 148. 排序链表:归并排序详解
前端·数据结构·算法·leetcode·链表·typescript·排序算法