Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在给定一些规则的情况下,如何使一个对象组合的价值最大化_Javascript_Algorithm_Optimization - Fatal编程技术网

Javascript 在给定一些规则的情况下,如何使一个对象组合的价值最大化

Javascript 在给定一些规则的情况下,如何使一个对象组合的价值最大化,javascript,algorithm,optimization,Javascript,Algorithm,Optimization,我有一个包含角色列表的模块对象。这些角色可以代表一个或多个角色:RoleA,或者RoleA;罗勒布 // Example var roles = [ 'Por', 'Ds', 'Dc', 'Dc', 'Dd', 'M', 'M;C', 'T', 'W', 'W;A', 'A;Pc' ] 我有另一个数组。这是一份球员名单。每个玩家都有一个“角色”和一个“价值”。角色也可以是单个或多个 // E

我有一个包含角色列表的模块对象。这些角色可以代表一个或多个角色:RoleA,或者RoleA;罗勒布

// Example

var roles = [      
    'Por',
    'Ds',
    'Dc',
    'Dc',
    'Dd',
    'M',
    'M;C',
    'T',
    'W',
    'W;A',
    'A;Pc'
]

我有另一个数组。这是一份球员名单。每个玩家都有一个“角色”和一个“价值”。角色也可以是单个或多个

// Example

var players = [  
{    
    name: 'NameA',
    role : 'A',
    value: 15
},
{    
    name: 'NameB',
    role : 'A;W',
    value: 15
},
{    
    name: 'NameC',
    role : 'Dd;Dc',
    value: 15
},
...
]
我的目标是为“角色”数组中的每个角色分配一个玩家,通过将单个玩家的价值相加,最大化团队的总价值

我在角色数组中迭代,试图每次都找到最好的选择。我通过添加一些简单的机制解决了一些问题,但在某些情况下,我仍然存在一些问题

有算法知识的人能解释一下什么是面对这类问题的最佳方式吗

    // Example

    var roles = [      
    ['Por', playerA],
    ['Ds', playerB],
    ['Dc', playerC],
    ['Dc', playerD],
    ['Dd', playerE],
    ['M', playerF],
    ['M;C', playerG],
    ['T', playerH],
    ['W', playerI],
    ['W;A', playerL],
    ['A;Pc, playerM]
    ]
这个问题称为:最大二部加权匹配。你们可以把它简化成最大流量的问题来解决

其想法是创建这样一个图表:

顶点:玩家和角色 边缘:将玩家与其可能的角色从角色阵列方向从一个角色连接到另一个角色 在对这个问题的公认答案中,下一步该做什么描述得很好

额外资源
最大流量问题:

阅读矩形和更一般的内容,不清楚将玩家分配到角色的规则是什么?你是任意分配的吗?@SomeDude规则是每个玩家可以扮演一个或多个角色。我有一个固定的角色数组,我必须使用它来生成一个squadaf,在阅读了一些我发现了这个。它工作得很好