问题描述
假如有如上的图,节点s和节点t表示起点和终点,假设图中的其他节点表示一个工程中的若干个任务,现在我们要为这若干个任务逐个分配一个权值,当有如节点{1,2}决定哪个任务先执行时,如果给节点1的优先权11>节点2的优先权10,则节点1先执行.可以看到图中的节点有先后顺序,如1执行之后3才可以执行,如何为这些节点分配优先权能保证先序节点的优先权>后续节点的优先权呢?优先权:正整数,越大表示先执行,如图中有11个节点则最大的优先权为11,最小的为1//仅仅是随机分配优先权,却不能保证先序节点优先权大publicint[]priorityEncode(intpopNum){GAGenegene=newGAGene(popNum);//int[]gene=newint[popNum];List<int>list=newList<int>();Randomr=newRandom();while(list.Count<popNum){intnum=r.Next(1,popNum+1);if(!list.Contains(num))list.Add(num);}for(inti=0;i<popNum;i++){gene[i]=(int)list[i];}returngene;}
或者可以对随机分配的优先权进行修补
解决方案
解决方案二:
图没有贴好小了一些重新发一下上述问题一个可能的解是:{10,11,7,9,3,8,5,4,6,2,1}
解决方案三:
如果对上图进行一次拓扑排序,重新分配一下节点的优先权是否可行呢?
解决方案四:
不是很明白楼主的意思,但是觉得拓扑排序可解。
解决方案五:
最简单的来讲就是为节点优先权赋值时保证前序节点的优先权大于后续节点优先权就行
解决方案六:
上面的这些点是固定位置吗?
解决方案七:
在s和t点之间的这些点有什么规则
解决方案八:
该回复于2008-05-09 11:09:35被版主删除
解决方案九:
该回复于2008-05-04 10:20:11被版主删除
解决方案十:
在s和t点之间的这些点没有什么规则只是随机的数量关于他们的前后顺序是已知的