我正在寻找一种算法的伪代码。伪代码的一行是这样的:
hs <- { (a, b) | a <- m, b <- l }
m
和l
都是对象数组。
这到底是什么意思?我的解释是,它将每个m
与每个l
配对,并将它们存储在数组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)}
这是正确的思考方式吗?
根据上下文的要求,这是使用基于增强学习的轮盘选择来设计超启发式算法的伪代码。 m
和l
分别包含一系列的突变试探法和本地搜索试探法。 hs
旨在作为将这些启发式方法配对在一起的数组,以便可以将它们依次应用于问题域。与之类似,先应用mutational heuristic m_i
,然后再应用local search heuristic l_j
。尚不清楚它们是否应该按照我所描述的方式或其他方式进行配对。
答案 0 :(得分:3)
您认为是正确的,这是根据压缩定义的列表,而(a, b)
是具有a
和b
值的集合。
更多信息:https://en.wikipedia.org/wiki/List_comprehension
haskell中的示例:https://wiki.haskell.org/List_comprehension
答案 1 :(得分:1)
如果将伪代码的行解释为类似于集合的数学符号,那么是的,这是唯一可行的选项恕我直言。
答案 2 :(得分:0)
我认为您的解释很正确,但这也是合理的:
如果我们得到您的示例变量:
hs = ({m1, m2}, {l1, l2, l3, l4})
它可以看作是离散空间的某种坐标。
如果您提供上下文(或完整的伪代码),我们可以进行更精确的解释