我遇到了一个问题,我想问它在算法/计算理论上应该属于什么类型/类别的问题。我还想问一下,是否有一个聪明的算法来解决它,而不是使用蛮力进行搜索。
现将问题描述如下:
假设有N个寄存器和M指令。每条指令对这些寄存器执行一组特定的操作(例如,n0=n0+1、n2=n3/n4和n3=n3)。指令可能需要满足某些先决条件(例如,n1>n2+1、n3>0和没有对n4的约束),否则,它就不能被应用。每个指令的效果是确定性的,两个指令可能对寄存器产生相同的影响。
给定初始系统状态N‘(即每个N寄存器的值)和最终的系统状态N’‘,如何找到将系统从状态N’引导到状态N‘’的指令序列?
原来的问题比这个抽象的模型要复杂得多,我尽力把它抽象出来。到目前为止,我唯一的想法是使用蛮力搜索,我觉得这可能是一个NP问题。
编辑:
想法1:
对于单个状态,有一些可用的指令。通过求解一些方程,我们可以得到类似于实际指令的基本指令,如ADD/MOV/SHR。通过操作这些基本指令,应该很容易将每个寄存器的值更改为目标值。然而,有两个问题:
发布于 2022-03-27 07:36:02
这是一个非常普遍的问题,根据数据集和操作的不同,它可能具有指数或多项式复杂度的解决方案:
https://stackoverflow.com/questions/71632753
复制相似问题