首页 > 解决方案 > 伪代码数组符号混淆

问题描述

我正在查看算法的一些伪代码。伪代码的一行是这样的:

hs <- { (a, b) | a <- m, b <- l }

Whereml都是对象数组。

这到底是什么意思?我的解释是,它将每个m与每个配对l并将它们存储在 array 中hs,如下所示:

假设m = {m1,m2}l = {l1,l2,l3,l4}

然后 hs = {(m1,l1),(m1,l2),(m1,l3),(m1,l4),(m2,l1),(m2,l2),(m2,l3),(m2,l4)}

这是正确的思考方式吗?


根据要求,这是用于设计超启发式的伪代码,使用基于强化学习的轮盘赌选择。ml分别包含一系列变异启发式和局部搜索启发式。hs旨在作为将这些启发式中的每一个配对在一起的数组,以便它们可以按顺序应用于问题域。如中,应用mutational heuristic m_i,然后local search heuristic l_j。只是不清楚它们是否应该按照我描述的方式或其他方式配对。

标签: javaarrayspseudocodenotation

解决方案


你认为是正确的,这是一个通过理解定义的列表,并且(a, b)是一个带有aandb值的集合。

更多信息:https ://en.wikipedia.org/wiki/List_comprehension

haskell 中的示例:https ://wiki.haskell.org/List_comprehension


推荐阅读