`
hojor
  • 浏览: 109207 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

贪婪算法(三)

阅读更多

上述贪婪算法能导致最优机器分配的证明留作练习(练习7)。可按如下方式实现一个复杂性为O (nl o gn)的贪婪算法:首先采用一个复杂性为O (nl o gn)的排序算法(如堆排序)按Si 的递增次序排列各个任务,然后使用一个关于旧机器可用时间的最小堆。

例1-6 [最短路径] 给出一个有向网络,路径的长度定义为路径所经过的各边的耗费之和。要求找一条从初始顶点s 到达目的顶点d 的最短路径。

贪婪算法分步构造这条路径,每一步在路径中加入一个顶点。假设当前路径已到达顶点q,

且顶点q 并不是目的顶点d。加入下一个顶点所采用的贪婪准则为:选择离q 最近且目前不在路径中的顶点。

这种贪婪算法并不一定能获得最短路径。例如,假设在图1 3 - 2中希望构造从顶点1到顶点5的最短路径,利用上述贪婪算法,从顶点1开始并寻找目前不在路径中的离顶点1最近的顶点。到达顶点3,长度仅为2个单位,从顶点3可以到达的最近顶点为4,从顶点4到达顶点2,最后到达目的顶点5。所建立的路径为1 , 3 , 4 , 2 , 5,其长度为1 0。这条路径并不是有向图中从1到5的最短路径。事实上,有几条更短的路径存在,例如路径1,4,5的长度为6。

根据上面三个例子,回想一下前几章所考察的一些应用,其中有几种算法也是贪婪算法。例如,霍夫曼树算法,利用n- 1步来建立最小加权外部路径的二叉树,每一步都将两棵二叉树合并为一棵,算法中所使用的贪婪准则为:从可用的二叉树中选出权重最小的两棵。L P T调度规则也是一种贪婪算法,它用n 步来调度n 个作业。首先将作业按时间长短排序,然后在每一步中为一个任务分配一台机器。选择机器所利用的贪婪准则为:使目前的调度时间最短。将新作业调度到最先完成的机器上(即最先空闲的机器)。

注意到在机器调度问题中,贪婪算法并不能保证最优,然而,那是一种直觉的倾向且一般情况下结果总是非常接近最优值。它利用的规则就是在实际环境中希望人工机器调度所采用的规则。算法并不保证得到最优结果,但通常所得结果与最优解相差无几,这种算法也称为启发式方法( h e u r i s t i c s )。因此L P T方法是一种启发式机器调度方法。定理9 - 2陈述了L P T调度的完成时间与最佳调度的完成时间之间的关系,因此L P T启发式方法具有限定性

能( bounded performance )。具有限定性能的启发式方法称为近似算法( a p p r o x i m a t i o na l g o r i t h m)。

本章的其余部分将介绍几种贪婪算法的应用。在有些应用中,贪婪算法所产生的结果总是最优的解决方案。但对其他一些应用,生成的算法只是一种启发式方法,可能是也可能不是近似算法。用的规则就是在实际环境中希望人工机器调度所采用的规则。算法并不保证得到最优结果,但通常所得结果与最优解相差无几,这种算法也称为启发式方法( h e u r i s t i c s )。因此L P T方法是一种启发式机器调度方法。定理9 - 2陈述了L P T调度的完成时间与最佳调度的完成时间之间的关系,因此L P T启发式方法具有限定性

能( bounded performance )。具有限定性能的启发式方法称为近似算法( a p p r o x i m a t i o na l g o r i t h m)。

本章的其余部分将介绍几种贪婪算法的应用。在有些应用中,贪婪算法所产生的结果总是最优的解决方案。但对其他一些应用,生成的算法只是一种启发式方法,可能是也可能不是近似算法。

分享到:
评论

相关推荐

    tanlansuanfa.rar_OFDM 贪婪_贪婪_贪婪 Matlab_贪婪算法_贪婪算法OFDM

    三、贪婪算法在OFDM中的具体应用 在提供的"tanlansuanfa.m"代码中,可以看到贪婪算法在OFDM功率分配问题上的实现。这段Matlab代码可能包括以下步骤: 1. 初始化:设定总的可用功率,获取信道状态信息,初始化空闲子...

    贪婪算法,MATLAB

    三、MATLAB中的贪婪算法实现 3.1 MATLAB作为一款强大的数值计算软件,提供了丰富的数学函数和数据结构,适合实现各种算法,包括贪婪算法。例如,我们可以使用MATLAB编写程序来解决最小生成树问题(如Prim算法或...

    贪婪算法 货箱装船问题

    #### 三、贪婪算法原理 贪婪算法的核心在于每一步都做出当前看来最优的选择,希望通过这种方式最终得到全局最优解。这种方法的关键在于确定合适的贪婪准则,即如何选择每一步的最佳操作。虽然贪婪算法不能保证总是...

    贪婪算法,回溯,动态规划等一些算法

    在计算机科学领域,算法是解决问题的关键工具,其中贪婪算法、回溯法和动态规划是三种常用的优化策略。本文将深入探讨这些算法的概念、原理及应用。 首先,贪婪算法是一种求解最优解的策略,它在每一步选择中都采取...

    tanlansuanfa.rar_优化_物料_贪婪算法

    这三者结合,意味着我们要用贪婪算法来解决物料管理的优化问题。 压缩包内的文件名看起来像是Delphi编程项目的组成部分,包括配置文件(Project1.cfg)、编译单元(Unit1.dcu)、项目文件(Project1.dpr)、工程...

    有关贪婪算法的一篇文章

    #### 三、贪婪算法的应用案例 ##### 3.1 容器装载问题 容器装载问题是指在有限容量的容器中装载物品,使装载物品的总价值最大化。在这个问题中,我们需要为每个物品决定是否装载。贪婪算法通过每次选择剩余物品中...

    混合迭代贪婪算法求解准时生产分布式流水线调度问题.pdf

    混合迭代贪婪算法在分布式流水线调度问题中的应用 混合迭代贪婪算法是一种metaheuristic算法,旨在解决复杂的优化问题。本文中,我们讨论了混合迭代贪婪算法在分布式流水线调度问题中的应用,该问题旨在最小化总...

    汉密尔顿回路C语言贪婪算法

    汉密尔顿回路C语言贪婪算法 还附带Floyd算法 求解两点间过第三点的最短路径 及两点间过第三第四两点的最短路径的算法

    贪婪算法的解读与代码实现_数学建模资料

    ### 三、贪婪算法的局限性 虽然贪婪算法在很多情况下表现良好,但它也有其局限性。主要体现在以下几点: 1. **无法保证全局最优**:贪婪算法往往只找到局部最优解,而无法保证全局最优,尤其是在存在多个局部最优...

    基于成本最小化贪婪算法室内自动布局代码

    本项目聚焦于“基于成本最小化贪婪算法”的室内自动布局代码,旨在通过高效的算法实现室内家具布置的自动化,以达到空间利用率最高、美观度最佳的效果。下面将详细介绍这个主题中的相关知识点。 一、贪婪算法 贪婪...

    装箱问题贪婪算法的运用

    贪婪算法是一种解决问题的有效策略,它不追求全局最优解,而是每一步都选择当前看起来最佳的决策,以此构建局部最优解,希望通过这些局部最优解组合成一个较好的全局解。这种算法适用于那些可以通过局部最优决策达到...

    Matlab中贪婪算法求解背包问题的研究与应用.pdf

    具体到Matlab中贪婪算法求解背包问题,问题描述是:有一组物品共9种,每种物品有重量、价值和单位价值三个属性。假设背包总容量为30千克,需要确定装包方案,使所装物品总重量不超过30千克且总价值最大。关键代码段...

    0-1背包问题-贪婪算法

    ### 0-1背包问题与贪婪算法 #### 一、0-1背包问题概述 0-1背包问题是一种经典的组合优化问题,在计算机科学领域有着广泛的应用。问题的基本形式是:给定一组物品,每种物品都有自己的重量和价值,以及一个背包的...

    使用模拟退火贪婪算法解决数独难题.zip,这是一份不错的文件

    三、结合模拟退火与贪婪算法 在数独求解中,模拟退火算法可以避免局部最优,但计算量较大;贪婪算法则效率较高,但可能陷入局部最优。将两者结合,可以在贪婪算法无法前进时采用模拟退火进行全局搜索,以提高解题...

    背包问题之贪婪算法求解C语言源代码).

    ### 背包问题之贪婪算法求解C语言源代码解析 #### 一、背景介绍 背包问题(Knapsack Problem)是计算机科学中的一个经典问题,在运筹学、组合优化以及动态规划等领域都有广泛的应用。它主要描述的是:给定一系列...

    理解和掌握贪婪算法的基本思想

    1)理解和掌握贪婪算法的基本思想; 2)使用贪婪算法求解背包问题以及最小花费生成树问题。 二、方法原理 贪心算法就是做出一系列选择,使原问题达到最优解。在每一个决策点,都是做出当前看来的最优选择。 三、实验...

    基于贪婪算法的排课系统的探讨与实现

    ### 基于贪婪算法的排课系统的探讨与实现 #### 概述 本文献讨论了一种基于贪婪算法的排课系统的设计与实现方法。针对高校排课问题,特别是成人教育学院的需求,研究团队提出了一个结合手动排课与自动排课的方案。...

Global site tag (gtag.js) - Google Analytics