首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何找到一个输入序列来驱动一个系统达到某种状态?

如何找到一个输入序列来驱动一个系统达到某种状态?
EN

Stack Overflow用户
提问于 2022-03-27 00:02:30
回答 1查看 76关注 0票数 0

我遇到了一个问题,我想问它在算法/计算理论上应该属于什么类型/类别的问题。我还想问一下,是否有一个聪明的算法来解决它,而不是使用蛮力进行搜索。

现将问题描述如下:

假设有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。通过操作这些基本指令,应该很容易将每个寄存器的值更改为目标值。然而,有两个问题:

  1. --这不是寻找序列的必要条件:即使我们不能导出这样的基本指令集,我们也可能能够将系统驱动到N‘’。
  2. 我们仍然没有一种策略来从一个州导航到另一个州。上述基本指令集仅在某一状态下有效,在某些操作后,由于某些指令的预条件不再匹配,它将失效。
EN

回答 1

Stack Overflow用户

发布于 2022-03-27 07:36:02

这是一个非常普遍的问题,根据数据集和操作的不同,它可能具有指数或多项式复杂度的解决方案:

解魔方的https://3dpancakes.typepad.com/ernie/2010/06/complexity-of-rubiks-cube.html#:~:text=A%20given%20configuration%20of%20the,in%20O(n%C2%B3)%20time.

  • solving

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71632753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档