第五章实践

Posted luzhibin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五章实践相关的知识,希望对你有一定的参考价值。

一。实践题目

7-2 工作分配问题

二。问题描述

设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。

解空间:

技术分享图片

int Backtrack(int t)
{
    if(t>n && sum<Min){
        Min=sum;
        return Min;
    }
    else
    {
        for(int k=0;k<n;k++){
            if(b[k]==0){
        sum=sum+a[t-1][k];
        b[k]=1;
        if(sum<=Min) Backtrack(t+1);
        sum=sum-a[t-1][k];
        b[k]=0;
        }
        }
    }
}

约束函数:if(sum<=Min) 判断对比当前选择后的费用sum与之前记录的最小总费用Min

减枝:if(b[k]==0) 将已选择的物品记录,并在解空间中删除对应树枝。

四。心得体会

这次实践题目不仅需要对解空间清楚分析并写出其对应的回溯算法,更需要很好地减枝,将算法时间缩短,通过这次实践,能对回溯算法如何减枝有了更深的体会,以及如何全面减枝有了一定地训练。

以上是关于第五章实践的主要内容,如果未能解决你的问题,请参考以下文章

《Python从入门到实践》--第五章用if语句 课后练习

《Python编程从入门到实践》_第五章_if语句

《Python从入门到实践》--第五章 各种情形下使用if语句2 课后练习

第五章上机实践

python 入门到实践第五章课后练习

第五章实践