我想运行两个依赖的非嵌套for循环。实质上它们是两个同时马尔可夫链,其中一个循环需要检查另一个循环中的值。有没有正确的方法来做到这一点?有没有错误/低效的方法可以避免?
虚构的例子:
想象一下,有两个人在房间里走动并触摸东西:我将他们触摸的东西记录在两个独立的阵列中。这是我的两个Chains
或for
循环。只要他们的行为是独立的,那就没问题了。但我想改变这一点,因此他们必须(实时)对另一个人正在做的事情作出反应。这可能吗(肯定是的)?
例如,循环1看起来像
for k=1:n
do something
%check loop 2
if something is equivalent
moves=n;
end
end
NB。从技术上讲,它可以在另一个循环之后完成,但我希望尽可能实时运行。
答案 0 :(得分:2)
您可能希望将此构造为一个同时处理两个链的for
循环。在伪代码中
for k = 1:n
compute step k of chain 1
compute step k of chain 2
deal with interaction between chains
您需要将每个链打包在一个可以传递给函数的数据结构中,这样您就不必在修改变量名的情况下重复两次“计算步骤k”代码。
只有当这种串行方法太慢时才会担心并行化。