问答题

[说明]
某汽车制造工厂有两条装配线。汽车装配过程如下图所示,即汽车底盘进入装配线,零件在多个工位装配,结束时汽车自动完成下线工作。


(1)e0和e1表示底盘分别进入装配线0和装配线1所需要的时间。
(2)每条装配线有n个工位,第一条装配线的工位为S0,0,S0,1,…,S0,n-1,第二条装配线的工位为 S1,0,S1,1,…,S1,n-1。其中S0,k和S1,k(0≤k≤n-1)完成相同的任务,但所需时间可能不同。
(3)ai,j表示在工位Si,j处的装配时间,其中i表示装配线(i=0或i=1),j表示工位号(0≤j≤n-1)。
(4)ti,j表示从Si,j处装配完成后转移到另一条装配线下一个工位的时间。
(5)x0和x1表示装配结束后,汽车分别从装配线0和装配线1下线所需要的时间。
(6)在同一条装配线上,底盘从一个工位转移到其下一个工位的时间可以忽略不计。
图4-17所示的流程图描述了求最短装配时间的算法,该算法的输入为:
n:表示装配线上的工位数;
e[i]:表示e1和e2,i取值为0或1;
a[i][j]:表示ai,j,i的取值为0或1,j的取值范围为0~n-1;
t[i][j]:表示ti,j,i的取值为0或1,j的取值范围为0~n-1;
x[i]:表示x0和x1,i取值为0或1。
算法的输出为:
fi:最短的装配时间;
li:获得最短装配时间的下线装配线号(0或者1)。
算法中使用的f[i][j]表示从开始点到Si,j处的最短装配时间。

【参考答案】

这是一道考查动态规划算法求解最优汽车装配线的分析题。当问题具有两个特性,即最优子结构和重叠子问题时,可以考虑用动态规划算......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【程序说明】 本程序先从文件读人各考生的准考证号(设为整型数)及成绩,并将其存放在一棵检索二叉树上,二叉树结点的健值是成绩,每个结点带一链表,链表结点存放取得该成绩的考生的准考证号。然后,程序按中序遍历检索二叉树,从高分到低分输出结果,使每行输出成绩及其取得成绩的考生的准考证号。 【程序】 #include < stdio. h > typedef struet idnode int id; struct idnode * next; ldNode; typedef struct marknode I int mark; ldNode * head; struct marknode * left, * right; MarkNode; char fname [ ] = sp07.dat ; main( ) int id, mark; MarkNode * root = null; FILE * fp = fopen(fname, r ); if(!fp) printf( file%s open error, n , fname); exit(0); while (!feop(fp)) fscanf(fp, %d%d , &id, &mark); btree(&root, id, mark); fclose(fp); print(root); btree(MarkNod * * mpptr, int id, int mark) ldNode * ip; MarkNode *mp = * mpptr; if (1) if (mark==p->mark) addldNODE ( (2) , id); else if ( mark >mp -> mark) btree (&top -> left, id, mark); else btree(&mp-> right, id, mark); else Imp = ( marknode * ) malloc(sizeo (marknode) ); mp -> mark = mark; mp -> left =mp -> right = NULL; (3) addldNode(&mp -> head, id); (4) ; addldNode(ldNode * * ipp, int id) ldNode * ip = * ipp; if ( (5) )addldNode ( (6) ), id; else ip = (ldNode * )malloc(sizeof(ldNode) ); sp - > id = id; ip -> next = NULL; (7) print(MarkNode * rap) ldNode *ip, *ip0; if (mp) print ( mp -> left); printf( %6d: t ,mp -> mark); ip = mp -> head; while(ip) printf( %6d ,ip -> id); ip0 =ip; ip = ip -> next; free (ip0); printf( n ); printf( mp -> right); free(mp);