当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 一.指派问题 MILY: 宋体; mso-ascii-fon
 

 

    摘要: 使用scopeguard在运行环境中监测内部变量 smilemac 1. scopeguard简介 我们知道,使用结构化异常来书写一个期望有较高可靠性的函数时,尤其这段函数如果有副作用(side effect),那么在执行失败,需要保持资源一致性的时候,琐碎凌乱的try块会使程序可读性很差,并且看上去很丑陋,petru marginean和andrei alexandrescu所写的sco......
    摘要: 以下内容转自本人自己的blog:http://springbuilder.blogone.net 因为blogcn总给人不安全的感觉,现把上面的一些笔记转到这里来,权当作为备份,要是能对大家有一些参考价值,那将是本人极大的荣幸,呵呵。 《深入浅出mfc》读书笔记(一,二) 今天开始读《深入浅出mfc》了,顺便留下写东西,以便日后查看。第0章(全书概况) 本书分四大篇: 第一篇:介绍与mfc相......


任意规模指派问题的C++类实现
一.指派问题

1.指派问题的数学模型 【程序编程相关:用C++Builder开发具有历史记录功

在生活中经常遇见这样的问题,有n项任务要求n个人完成,这n个人完成各项任务的效率(或所需时间)不同,于是产生指派哪个人去完成哪项任务的问题,这类问题称为指派问题或分派问题. 【推荐阅读:使用API调用Windows“注销/重启

  【扩展信息:XML文件源码察看器(六)

引入变量xij,其取值只能是1或0,并令xij=1表示指派第i人完成第j项任务  xij=0表示不指派第i人完成第j项任务;当问题要求极小化时,数学模型是:                                                                                                     min z=         ①    

 ② ③

  ④

约束条件②说明第j项任务只能由1人完成;约束条件③说明第i人只能完成1项任务.满足约束条件②--④的解,可以用矩阵来表示,此矩阵称为解矩阵.

当问题要求极大化时,可令bij=m-cij把问题转换成极小化模型.

二.指派问题的解法

指派问题是0-1规划的特例,也是运输问题的特例,可以用整数规划.0-1规划.运输问题的解法去求解,但因忽略指派问题的特殊性,因而不能达到好的解题效率.

指派问题的最优解具有这样的性质,若从系数矩阵(bij)的一行(列)各元素中分别减去该行(列)的最小元素,得到新矩阵(bij’),那么以(bij’)为系数矩阵求得的最优解与用原系数矩阵求得的最优解相同.

库恩于1955年提出了指派问题的解法,其中引用了康尼格一个关于矩阵中0元素的定理:系数矩阵中独立0元素的最多个数等于能覆盖所有0元素的最少直线数.

三.程序实现

依照上述方法,编制assignment类,以实现对任意规模的指派问题的解决.

class assignment

{

public:

    assignment(int n, int * eff);

    ~assignment();

    int * getassignment(bool ismin=true);

 

private:

    bool hasassigned(int * eff);

    bool haszero(int * eff);

    void changemintomax();

    void getrowcolzero(int * eff);

    void assignandgetoff(int * eff);

    void changeefficiency(int * eff);

    void gettaskassignment(int * eff);

    void assigncore(int * eff);

    void resetzero (int * eff);

    int  getlinenum(int *eff);

   

private:

    bool   allassigned;

    int *  task;

    int *  efficiency;

    int    scale;

    int *   rowticked;

    int *  colticked;

 

public:           // 定义的几个常数

    const int  maxvalue ;

    const bool maxassign;


...   下一页
 ·软件生态危机    »显示摘要«
    摘要: 软件生态危机——微软操作系统垄断造成的软件生态种群过于单一潜伏着极大的危机 在自然界任何一种生态系中,品种过于单一的危害性都很大。最典型的例子莫过18世纪爱尔兰由于单一种植马铃薯而酿成的“爱尔兰大饥荒”。马铃薯祖宗生长在包括智利和秘鲁在内的部分南美地区。西班牙的航海者把马铃薯带到了欧洲,这种作物在爱尔兰贫瘠土地上生长很好,营养丰富,爱尔兰人很爱吃,于是他们大量地种植。逐渐地,马铃薯成了爱尔......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE