计算机等级考试—Dijkstra 算法和 Kruskal 算法在进销存(采购 - 入库 - 存储 - 出库)—东方仙盟练气期
Dijkstra 算法在进销存中聚焦「单源最优路径」,核心落地场景是「供应商→仓库的最优采购规划」,追求单个目标点到多个来源点的最低成本 / 最短时间。Kruskal 算法在进销存中聚焦「全局最优连通网络」,核心落地场景是「多仓库 / 网点的最优调拨网络搭建」,追求所有节点连通且总消耗最低,无冗余环路。两个 Mermaid 图表均分为「业务 + 算法」流程图和「结果」示意图,既体现了算法逻辑,又贴
- Dijkstra 算法:核心是求「单源最短路径」,在进销存中可用于「多供应商到仓库的最优采购路径规划」(最优可指运输成本最低、运输时间最短、综合损耗最少等)。
- Kruskal 算法:核心是求「最小生成树」,在进销存中可用于「多仓库 / 多网点间的库存调拨网络搭建」(搭建总成本最低、连通性最优的调拨链路,确保库存高效流转)。
下面分别提供两个算法结合进销存场景的 Mermaid 图表(包含流程图 + 示意图),并附带业务逻辑解释。
一、 Dijkstra 算法在进销存中的应用(供应商→仓库最优采购路径)
某仓库需要采购一批原材料,有 3 个可选供应商(A、B、C),供应商到仓库之间有不同的中转物流点,不同路径对应不同的综合成本(含运输费、包装费、损耗费),使用 Dijkstra 算法找到「单个仓库(单源)」到各供应商的最低成本采购路径。
Mermaid 图表(流程图 + 路径示意图)
1. 算法执行流程图(结合进销存业务)

开始:初始化进销存采购数据
确定目标:仓库(单源点)求最低成本采购路径
录入数据:供应商(A/B/C)、中转物流点、各路径综合成本
Dijkstra 算法初始化
设置仓库到自身成本为 0
设置仓库到其他所有节点(供应商/中转点)成本为∞(不可达初始值)
创建已访问节点集合(初始为空)、未访问节点集合(包含所有节点)
核心迭代:寻找最优路径
从末访问集合中,选取到仓库成本最小的节点 X
将节点 X 加入已访问集合
遍历节点 X 的所有相邻未访问节点 Y
计算:仓库→X→Y 的成本 是否 < 仓库→Y 的当前记录成本
是否更小?
更新仓库→Y 的成本为 仓库→X→Y 的成本,记录路径(X→Y)
保持仓库→Y 的当前成本和路径不变
判断:未访问集合是否为空?
算法结束:输出仓库到各供应商的最低成本采购路径+总成本
进销存业务落地
根据最优路径下达采购订单
跟踪物流路径,记录采购成本
入库时核对成本,更新库存台账
开始:初始化进销存采购数据
确定目标:仓库(单源点)求最低成本采购路径
录入数据:供应商(A/B/C)、中转物流点、各路径综合成本
Dijkstra 算法初始化
设置仓库到自身成本为 0
设置仓库到其他所有节点(供应商/中转点)成本为∞(不可达初始值)
创建已访问节点集合(初始为空)、未访问节点集合(包含所有节点)
核心迭代:寻找最优路径
从末访问集合中,选取到仓库成本最小的节点 X
将节点 X 加入已访问集合
遍历节点 X 的所有相邻未访问节点 Y
计算:仓库→X→Y 的成本 是否 < 仓库→Y 的当前记录成本
是否更小?
更新仓库→Y 的成本为 仓库→X→Y 的成本,记录路径(X→Y)
保持仓库→Y 的当前成本和路径不变
判断:未访问集合是否为空?
算法结束:输出仓库到各供应商的最低成本采购路径+总成本
进销存业务落地
根据最优路径下达采购订单
跟踪物流路径,记录采购成本
入库时核对成本,更新库存台账
2. 路径示意图(示例:仓库→供应商的成本图)

图表解释
- 流程图清晰展示了 Dijkstra 算法在进销存采购场景中的「业务初始化→算法执行→业务落地」全流程,核心是迭代更新最低成本路径。
- 路径示意图中,红色粗线是 Dijkstra 计算出的最优路径:
- 仓库→中转点 1→供应商 A(总成本 2+1=3)
- 仓库→中转点 1→供应商 B(总成本 2+3=5,优于仓库→中转点 2→B 的 5+2=7)
- 仓库→中转点 2→供应商 C(总成本 5+1=6,最优)
二、 Kruskal 算法在进销存中的应用(多仓库 / 网点最优库存调拨网络)
某企业有 4 个区域仓库(W1、W2、W3、W4),需要搭建库存调拨网络(当某仓库缺货时,可从其他仓库调拨补充),不同仓库间的调拨有链路成本(含运输费、人工调度费、库存周转损耗),使用 Kruskal 算法搭建「连通所有仓库、总调拨成本最低」的网络(最小生成树),避免重复搭建高成本链路。
Mermaid 图表(流程图 + 网络示意图)
1. 算法执行流程图(结合进销存业务)
开始:初始化进销存调拨数据
确定目标:搭建多仓库最低总成本调拨网络
录入数据:各仓库(W1-W4)、仓库间可调拨链路、各链路调拨成本
Kruskal 算法初始化
将所有调拨链路按成本从小到大排序
初始化并查集(每个仓库独立为一个集合,避免环路)
初始化最小生成树(初始为空,总费用为 0)
核心迭代:选取最优链路
从排序后的链路中,选取成本最小的链路(U-V)
使用并查集判断:仓库 U 和仓库 V 是否属于同一个集合?(是否会形成环路)
是否形成环路?
将链路(U-V)加入最小生成树
更新总调拨成本(累加当前链路成本)
使用并查集合并仓库 U 和仓库 V 所在的集合
丢弃该链路,避免网络环路(无意义的高成本重复链路)
判断:最小生成树是否包含所有仓库?(集合数量是否为 1)
算法结束:输出最低成本调拨网络(最小生成树)+ 总调拨成本
进销存业务落地
根据调拨网络制定库存周转规则(优先选择低成本链路)
缺货时,通过最优调拨网络下达调拨指令
调拨完成后,更新各仓库库存台账和调拨成本统计
开始:初始化进销存调拨数据
确定目标:搭建多仓库最低总成本调拨网络
录入数据:各仓库(W1-W4)、仓库间可调拨链路、各链路调拨成本
Kruskal 算法初始化

将所有调拨链路按成本从小到大排序
初始化并查集(每个仓库独立为一个集合,避免环路)
初始化最小生成树(初始为空,总费用为 0)
核心迭代:选取最优链路
从排序后的链路中,选取成本最小的链路(U-V)
使用并查集判断:仓库 U 和仓库 V 是否属于同一个集合?(是否会形成环路)
是否形成环路?
将链路(U-V)加入最小生成树
更新总调拨成本(累加当前链路成本)
使用并查集合并仓库 U 和仓库 V 所在的集合
丢弃该链路,避免网络环路(无意义的高成本重复链路)
判断:最小生成树是否包含所有仓库?(集合数量是否为 1)
算法结束:输出最低成本调拨网络(最小生成树)+ 总调拨成本
进销存业务落地
根据调拨网络制定库存周转规则(优先选择低成本链路)
缺货时,通过最优调拨网络下达调拨指令
调拨完成后,更新各仓库库存台账和调拨成本统计
2. 调拨网络示意图(示例:多仓库最小生成树)

图表解释
- 流程图展示了 Kruskal 算法在进销存调拨场景中的核心逻辑:「排序链路→避环选路→合并集合→搭建最优网络」,关键是通过并查集避免环路,确保网络连通且成本最低。
- 调拨网络示意图中,红色粗线是 Kruskal 计算出的最小生成树(总费用 1+2+1=4):
- 选取链路 W1-W2(成本 1,最小)
- 选取链路 W2-W3(成本 2,避环,不重复选 W1-W3)
- 选取链路 W3-W4(成本 1,避环,不重复选 W2-W4)
- 最终连通所有 4 个仓库,且总调拨成本最低,无冗余环路。
总结
- Dijkstra 算法在进销存中聚焦「单源最优路径」,核心落地场景是「供应商→仓库的最优采购规划」,追求单个目标点到多个来源点的最低成本 / 最短时间。
- Kruskal 算法在进销存中聚焦「全局最优连通网络」,核心落地场景是「多仓库 / 网点的最优调拨网络搭建」,追求所有节点连通且总消耗最低,无冗余环路。
- 两个 Mermaid 图表均分为「业务 + 算法」流程图和「结果」示意图,既体现了算法逻辑,又贴合进销存的实际落地流程,便于理解和落地。
阿雪技术观
在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者。无论是分享代码、撰写技术博客,还是参与开源项目维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基生命,为科技进步添砖加瓦。
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
更多推荐

所有评论(0)