zoukankan      html  css  js  c++  java
  • 算法第四章上机实践报告

    一、实践题目

    程序存储问题

    二、问题描述

    设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。

    三.算法描述

    贪心选择性质:

    证明:

    设A是最优解,且A中最先放入磁带的是程序k。

    若k = 1,则最优解包含程序1,即A是一个以贪心选择开始的最优解。

    若k>1    最优解不包含程序1,令B=A–{k}∪{1},因为程序 1 的长度小于程序 k 的长度,且 A中的程序个数与B相同,故B也是一个最优解,而B包含程序1,故总存在以贪心选择开始的最优存储方案。

    最优子结构性质:

    证明:

    假设A‘ 不是P’ 的最优解,设B’ 是P‘ 的最优解,且 | B' | > | A' |, 则 B’  ∪ {1} 是 P的解,且| B' | + 1 > | A |, 这与A是最优解矛盾,故A‘ = A - {1}是 P’ = {2, 3, ...,n}的一个最优解。

    四、算法时间及空间复杂度分析

    由程序存储问题的贪心选择性质和最优子结构性质,容易证明算法的正确性,算法的主要计算量在于将程序依照长度从小到大排序,所以算法的时间复杂度为O(nlogn)。没有使用辅助空间,空间复杂度为O(1)。

    五、心得体会

    本次上机实验是为了巩固对贪心算法的掌握程度,用该算法解决问题时最重要的是贪心策略的确定,只要确定了贪心策略,每次根据贪心策略选择目前最优的解即可得到整体最优解。

     

  • 相关阅读:
    JavaScript你所不知道的困惑(3)
    Android的代码都得自己一个个敲一遍吗?
    现代化农业在美国的兴起与发展
    高内聚与低耦合实现小记
    iOS 载入图片选择imageNamed 方法还是 imageWithContentsOfFile?
    swift笔记——环境搭建及Hello,Swift!
    HDU 4832(DP+计数问题)
    [TJOI2019]甲苯先生的线段树
    2019-8-31-C#-如何写-DEBUG-输出
    2019-8-31-C#-如何写-DEBUG-输出
  • 原文地址:https://www.cnblogs.com/fengwanthousand/p/11877685.html
Copyright © 2011-2022 走看看