package com.duoduo.day316;
/**
* 最优加工顺序(机器零件加工问题)
* 问题描述: 有n个机器零件,每个零件必须先由机器1处理,再由机器2处理。零件Ji需要机器1,2处理时间为T1i,T2i.
* 如何安排零件加工顺序,使第一个零件从机器1上加工开始到最后一个零件在机器2上加工完成,所需的总加工时间最短?
* 问题转化: 拿实例进行分析发现:机器1可以连续加工,机器2开始的时间=max(当前机器1的下线时间f1, 机器2 的下线时间f2)
* 算法设计: 1 定义问题解空间:{x1,x2...xn}分量xi表示第i个加工的零件号 ,n个零件组成的集合为S={1,2..n},xi的取值为S-{x1,x2..X(i-1))
* 2 解空间的组织结构: 一棵排列树 树深度为n n!个叶子节点
* 3 搜索解空间 约束条件-----每一种顺序均可以 -----没有约束
* 限界条件----f2<bestf f2=0,bestf=无穷大(初始值) f2:当前已完成的零件在机器2上加工结束的时间
* bestf:当前找到的最优方案的加工时间
* @author 多多
*
*/
import com.duoduo.day316.*;
import java.util.Scanner;
public class Test5_6 {
static int max=100; //默认数组大小
static int n,bestf,f1,f2; // n为零件个数 bestf为最优方案加工总时间 f1当前机器1 上加工的完成时间 f2当前机器2上加工的完成时间
static int []x=
回溯法--最优加工顺序(机器零件加工)
最新推荐文章于 2021-11-13 17:35:41 发布
该博客探讨了如何使用回溯法来确定机器零件加工的最优顺序。通过介绍时间复杂度和空间复杂度的概念,文章深入讲解了排列树在解决此类问题中的应用。以n=3为例,详细阐述了如何通过递归交换序列中的数字来生成n个数的全排列。
摘要由CSDN通过智能技术生成