第五章实践

  1. 实践题目 :工作分配问题

    1. 问题描述:设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。
    2. 算法描述(包括解空间,画出测试样例的解空间树,剪枝(约束函数或限界函数)方法描述)

这道题就是旅行售货员问题的同类

第一个判断条件是访问到最后一个人时与当前最优解进行比较

第二个是如果当前解大于当前最优解则不需要继续访问,可以减少时间(做的时候是>号,发现>=可能更好)

第三个判断当前任务是否被分配。

第n层表示第n个人的选择

  1. 心得体会(对本次实践收获及疑惑进行总结)

回溯法的精髓在于剪枝,那就需要约束函数或限界函数去实现。这道题设一个一维数组表示任务的选择情况我觉得是这道题的核心。

结对编程讨论这些限界条件会有比较大的争议,大家按照自己方法做出来再讨论比较有效率。

原文地址:https://www.cnblogs.com/ReJay/p/10151585.html

时间: 2024-11-02 05:43:06

第五章实践的相关文章

第五章实践报告

1.实践题目:工作分配问题 2.问题描述: 设集合S={x1,x2,-,xn}是一个正整数集合,c是一个正整数,子集和问题判定是否存在S的一个子集S1,使S1中的元素之和为c.试设计一个解子集和问题的回溯法. 输入格式: 输入数据第1行有2个正整数n和c,n表示S的大小,c是子集和的目标值.接下来的1行中,有n个正整数,表示集合S中的元素. 是子集和的目标值.接下来的1 行中,有n个正整数,表示集合S中的元素. 输出格式: 输出子集和问题的解,以空格分隔,最后一个输出的后面有空格.当问题无解时,

算法第五章实践

一 . 实践题目 工作分配问题 二 . 问题描述 设有n件工作分配给n个人.将工作i分配给第j个人所需的费用为cij . 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小. 输入格式: 输入数据的第一行有1 个正整数n (1≤n≤20).接下来的n行,每行n个数,表示工作费用. 输出格式: 将计算出的最小总费用输出到屏幕. 输入样例: 3 10 2 3 2 3 4 3 4 5 输出样例: 9 三 .算法描述 进行回溯,遍历左子树后回溯遍历右子树 if(cp+

算法第五章实践报告

1. 实践题目 工作分配问题 2. 问题描述 设有n件工作分配给n个人.将工作i分配给第j个人所需的费用为cij . 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小. 输入格式: 输入数据的第一行有1 个正整数n (1≤n≤20).接下来的n行,每行n个数,表示工作费用. 输出格式: 将计算出的最小总费用输出到屏幕. 输入样例: 在这里给出一组输入.例如: 3 10 2 3 2 3 4 3 4 5 输出样例: 在这里给出相应的输出.例如:   9 3. 算

阅读《软件工程—理论方法与实践》第五章心得体会

阅读第五章所了解到的基本知识,形式化方法是指将离散数学的方法用于解决软件工程领域的问题,主要包括建立精确的数学模型以及对模型的分析活动.主要目的是保证软件的正确性.已建立的形式化方法可分为操作类和描述类.操作类方法基于状态和转移;描述类基于数学公理和概念.形式证明与验证技术主要包括模型检测(适用于有穷状态系统,完全自动化并且验证速度快)和定理证明(采用逻辑公式来表示系统规约及其性质,分为自动和交互式两种).一阶线性时态逻辑是一阶谓词逻辑的扩展.对汉诺塔操作规划问题有了更深一步的理解.计算树逻辑是

软件工程——理论、方法与实践 第五章

第五章主要讲 1.形式化方法基本概念分为形式规约.形式证明与验证.程序求精,形式证明与验证技术主要包括模型检测和定理证明. 2.时态逻辑介绍了Kripke结构:一阶线性时态逻辑以队列及其操作与汉诺塔操作规划问题为例进行讲解.计算树逻辑一般是CTL与CTL*的统称. 3.模型检测就是在软件系统的Kripke结构模型下,对以CTL*公式给出的软件性质的正确性验证. 4.Z语言是由牛津大学程序设计研究小组开发的一种形式语言,对Z语言的表示进行详细的概述与讲解,并以停车场管理系统与图书管理系统为例详细讲

大道至简第五章阅读感想

第五章失败的过程也是过程 今天王建民老师依旧带领着我们阅读了大道至简第五章,第五章是失败的过程也是过程.通过前面的技术.团队和沟通,这章主要讲了关于做工程的问题. 文章开篇以一句<明皇实录>中的“虚有其表耳”来说明一个很重要的问题就是:不能只求外表,而是要透过表象,力求实质. 第五章的整体思想是让我们注重过程,因为有很多人从来不注重过程,只注重结果.然而过程对于一个编程人员也是非常重要,如果一个好的编程员从来不在乎程序的过程,只是关心最后程序是否能够实现,那么这个编程员一定不是一个好的编程员.

《Introduction to Tornado》中文翻译计划——第五章:异步Web服务

http://www.pythoner.com/294.html 本文为<Introduction to Tornado>中文翻译,将在https://github.com/alioth310/itt2zh上面持续更新,本文内容可能不是最新状态,请在GitHub上获得最新版本. 本文也可在http://demo.pythoner.com/itt2zh上进行格式化的预览. 第五章:异步Web服务 到目前为止,我们已经看到了许多使Tornado成为一个Web应用强有力框架的功能.它的简单性.易用性

现代软件工程讨论第五章-第八章

第五章 1.  团队模式和团队的开发模式有什么关系? 团队模式是指一个团队的成员在一起合作的方式,而团队的开发模式特制软件开发团队在软件开发过程中所使用的合作方式.也就是说团队的开发模式是一种特殊的应用在软件开发领域的团队模式. 2.如果你领头开展一个全新的项目,你要怎么选择“合适”的团队模式? 如果我带头做一个全新的项目,我会选择特点不同的人,各自发挥自己的特长,类似功能团队模式,大家各司其事,平等协作.如我擅长代码编写,数据库设计,成员中还有负责需求分析的,负责文档整理和总结的,负责测试等.

提供跟老男孩学Linux运维Shell编程实战的第四、第五章源代码

第四章是讲Shell变量知识进阶与实践: 第五章是讲变量的数值计算实践: 附件中包括源码,请下载. 该两章在学习时要注意相关事项: 1.注意标点符号的使用:例如,单引号,反引号,双引号等: 2.注意该要留空格的留空格: 3.注意特殊变量的作用: 4.内置变量的使用: 5.算术运算任的使用.