线性遗传规划:内含子去除算法

时间:2018-11-16 18:43:40

标签: genetic-programming

  1. 设置集R_eff始终包含在当前程序位置有效的所有寄存器。 R_eff:= {r | r是输出寄存器}。从最后一条程序指令开始,然后向后移动。
  2. 使用以下命令标记程序中的下一个先前操作:目标寄存器r_dest元素-R_eff。如果找不到这样的说明,请转到5。
  3. 。如果操作直接在一个分支或一系列分支之后,则也请标记这些指令。否则删除r_dest 来自R_eff。
  4. 插入新标记的每个源(操作数)寄存器r_op R_eff中的指令(如果尚未包含)。转到2。
  5. 停止。所有未标记的说明均为内含子。

这是给定的算法,我知道这个问题是在之前提出的,但是我在一些事情上不清楚(结果是网上没有很多材料可以帮助您解决此问题)。我主要需要知道我们在比较什么。您有一个程序,并且在程序内以:

形式显示
  

r0 = r1 + r2

仅作为示例。因此,我了解我们从最后一条指令开始,然后向后移动以进行比较。但是在第2步中,当它说要向后移动时,我们是将其返回到紧接在前的指令,还是要向后移动到具有共同寄存器的指令? 对于我给出的示例,是继续向后搜索直到找到另一个r0,还是向后搜索直到找到r1或r2?

我对这个简单的事情很困惑,希望能得到我的帮助

0 个答案:

没有答案