当前位置:编程学习 > C#/ASP.NET >>

[100分]求解一个按照生成数组的问题



假如有如上的图,节点s和节点t表示起点和终点, 
假设图中的其他节点表示一个工程中的若干个任务,
现在我们要为这若干个任务逐个分配一个权值,
当有如节点{1,2}决定哪个任务先执行时,如果给节点1的优先权11>节点2的优先权10,则节点1先执行.

可以看到图中的节点有先后顺序,如1执行之后3才可以执行,如何为这些节点分配优先权 能保证 先序节点的优先权>后续节点的优先权呢?

优先权:正整数,越大表示先执行,如图中有11个节点则最大的优先权为11,最小的为1

 
//仅仅是随机分配优先权,却不能保证先序节点优先权大
public int[] priorityEncode(int popNum)
    {
        GAGene gene = new GAGene(popNum);
        //int[] gene = new int[popNum];
        List<int> list = new List<int>();
        Random r = new Random();
        while (list.Count < popNum)
        {
            int num = r.Next(1, popNum + 1);
            if (!list.Contains(num))
                list.Add(num);
        }
        for (int i = 0; i < popNum; i++)
        {
            gene[i] = (int)list[i];
        }
        return gene;
    }


或者可以对随机分配的优先权进行修补
--------------------编程问答-------------------- 图没有贴好 小了一些 重新发一下



上述问题一个可能的解是:

{10,11,7,9,3,8,5,4,6,2,1} --------------------编程问答-------------------- 如果对上图进行一次拓扑排序,重新分配一下节点的优先权是否可行呢? --------------------编程问答-------------------- 不是很明白楼主的意思,但是觉得拓扑排序可解。 --------------------编程问答-------------------- 最简单的来讲 就是为节点优先权赋值时保证 前序节点的优先权大于后续节点优先权 就行 --------------------编程问答-------------------- 上面的这些点是固定位置吗? --------------------编程问答-------------------- 在s和t点之间的这些点有什么规则 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 在s和t点之间的这些点没有什么规则 只是随机的数量 
关于他们的前后顺序是已知的
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,