当前位置: 首页 > news >正文

算法设计与分析7(贪心算法)

Prim 算法(寻找最小生成树)

  1. 用途:Prim 算法是一种贪心算法,用于在加权无向图中寻找最小生成树(MST),即能够连接图中所有顶点且边的权重之和最小的子图。
  2. 基本思路
    • 从图中任意一个顶点 v 开始,将其加入到最小生成树的顶点集合 S 中。
    • 不断从与 S 中顶点相邻的边中选择一条权重最小的边,将这条边连接的另一个顶点加入到 S 中。
    • 重复上述步骤,直到图中所有顶点都被加入到 S 中,此时得到的子图就是最小生成树。

Dijkstra 算法(所有点到一点的最短距离)

  1. 用途:Dijkstra 算法也是一种贪心算法,用于在加权有向图或无向图中,计算从一个给定的源顶点到其他所有顶点的最短路径。
  2. 基本思路
    • 初始化:将源顶点的距离设置为 0,其他顶点的距离设置为无穷大。同时,将源顶点加入到已确定最短距离的顶点集合 S 中。
    • 对于与源顶点相邻的顶点,更新它们到源顶点的距离(如果新的距离更短)。
    • 从尚未加入 S 的顶点中选择距离源顶点最近的顶点 u ,将其加入到 S 中。
    • 对于与 u 相邻的顶点,再次更新它们到源顶点的距离(如果通过 u 到达这些顶点的距离更短)。
    • 重复上述步骤,直到所有顶点都被加入到 S 中,此时每个顶点到源顶点的距离就是最短距离。

Floyd算法(所有点到一点的最短距离)

    1.用途:Floyd 算法是一种动态规划算法,用于求解任意两点之间最短路径,也可以用来求所有点到一点的最短距离。

    2.基本思路

  1. 定义一个二维数组 distdist[i][j] 表示顶点 i 到顶点 j 的距离。初始时,若顶点 i 和 j 之间有边相连,则 dist[i][j] 为边的权重;若 i = j,则 dist[i][j] = 0;否则 dist[i][j] 设为无穷大
  2. 进行三层循环,最外层循环变量 k 从 0 到 V - 1(V 为顶点数),表示中间顶点。中间两层循环分别遍历所有顶点对 (i, j),对于每一对顶点 i 和 j,更新 dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]),即通过中间顶点 k 看是否能使 i 到 j 的距离更短。
  3. 迭代结束后,dist[i][s] 中存储的就是顶点 i 到顶点 s 的最短距离。

区别:Dijkstra 算法适用于边权非负的情况,且效率相对较高;Floyd算法虽然时间复杂度较高,但可以处理更一般的情况,并且能同时求出任意两点之间的最短路径。

汽车加油问题

问题:

一辆汽车加满油后可行驶 n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。

输入格式:
第一行有 2 个正整数n和 k(k<=1000 ),表示汽车加满油后可行驶n公里,且旅途中有 k个加油站。
第二行有 k+1 个整数,表示第 k 个加油站与第k-1 个加油站之间的距离。
第 0 个加油站表示出发地,汽车已加满油。
第 k+1 个加油站表示目的地。

输出格式:
输出最少加油次数。如果无法到达目的地,则输出“No Solution!”。

思路:

贪心算法,要尽可能少的加油

每次到站,检查剩余油量,

①到站后的剩余油量能到下一站,不加油

②到站后的剩余油量到不了下一站

  • 加了油后到得了下一站,加油,
  • 加了油后还是到不了下一站, 则无法到达目的地,退出

相关文章:

  • 网络准入控制系统:2025年网络安全的坚固防线
  • WebUI可视化:第7章:系统优化与部署实战
  • JPEG 解码 第28次CCF-CSP计算机软件能力认证
  • 企业网站html源代码 企业网站管理源码模板
  • C/C++时间函数详解及使用场景
  • ArrayUtils:数组操作的“变形金刚“——让你的数组七十二变
  • [Unity]-[UI]-[Prefab] 关于Unity UGUI 的布局及组件讲解
  • C# 综合示例 库存管理系统7 主界面(FormMain)
  • 《AI大模型趣味实战》基于RAG向量数据库的知识库AI问答助手设计与实现
  • (CAS:130100-20-8)Mag-Fura-2 AM Cell Permeant,配制方法步骤
  • 国产32位单片机PY32F003,ADC使用注意事项
  • Ubuntu中的防火墙工具
  • 网络安全概述:定义、重要性与发展历程
  • 从零开始用Turtle绘制分形树,数学与编程的完美结合!
  • matplotlib2-统计分布图
  • 【TS入门笔记2---基础语法】
  • 多模态大语言模型arxiv论文略读(四十一)
  • 03实战篇Redis02(优惠卷秒杀、分布式锁)
  • 精益数据分析(23/126):把握创业阶段与第一关键指标
  • 隐形革命:环境智能如何重构“人-机-境“共生新秩序
  • 广汽集团一季度净亏损7.3亿元,同比转亏,总销量下滑9%
  • 李良生已任应急管理部党委委员、政治部主任
  • 福建海警位金门附近海域依法开展常态化执法巡查
  • 浦江观察|3.6亿元消费券,为上海餐饮业带来了什么?
  • 印尼塔劳群岛发生6.2级地震,震源深度140千米
  • 外汇局:4月以来外汇市场交易保持平稳,跨境资金延续净流入