伪代码数组符号混淆
Pseudocode array notation confusion
我正在查看算法的一些伪代码。其中一行伪代码是这样的:
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
。只是不清楚它们是否应该按照我描述的方式或其他方式配对。
你认为是正确的,这是一个综合定义的列表,(a, b)
是一个集合a
和b
的值。
更多信息:https://en.wikipedia.org/wiki/List_comprehension
haskell 中的示例:https://wiki.haskell.org/List_comprehension
如果要将那行伪代码解释为集合的数学符号,那么是的,恕我直言,这是唯一合理的选择。
我觉得你的解释很对,但也有道理:
如果我们得到您的示例变量:
hs = ({m1, m2}, {l1, l2, l3, l4})
它可以被认为是离散 space 的某种坐标。
如果您提供上下文(或完整的伪代码),我们可以做出更精确的解释
我正在查看算法的一些伪代码。其中一行伪代码是这样的:
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
。只是不清楚它们是否应该按照我描述的方式或其他方式配对。
你认为是正确的,这是一个综合定义的列表,(a, b)
是一个集合a
和b
的值。
更多信息:https://en.wikipedia.org/wiki/List_comprehension
haskell 中的示例:https://wiki.haskell.org/List_comprehension
如果要将那行伪代码解释为集合的数学符号,那么是的,恕我直言,这是唯一合理的选择。
我觉得你的解释很对,但也有道理:
如果我们得到您的示例变量:
hs = ({m1, m2}, {l1, l2, l3, l4})
它可以被认为是离散 space 的某种坐标。
如果您提供上下文(或完整的伪代码),我们可以做出更精确的解释