java-如何找到满足要求的最小操作集
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何找到满足要求的最小操作集,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1750字,纯文字阅读大概需要3分钟。
内容图文
![java-如何找到满足要求的最小操作集](/upload/InfoBanner/zyjiaocheng/658/eca2a4ce48c148b6b7d880c5f0ac1a71.jpg)
如果我先显示代码,我认为这会更容易.
/* Machine that can add and remove pools to its stack */
public class Machine {
private final int toolQuantity = 5;
public boolean addTool(Tool t) { return true; }
public boolean removeTool(Tool t) { return true; }
public boolean processJob(Job j) { return true; }
}
/* Tool that is needed to process jobs */
class Tool {
}
/* Job that needs specific tools to be processed on machine */
class Job {
private final List<Tool> needs = Collections.emptyList();
}
interface Command { public void execute(); }
class AddTool implements Command {
private Machine m;
private Tool t;
@Override
public void execute() { }
}
class RemoveTool implements Command {
private Machine m;
private Tool t;
@Override
public void execute() { }
}
简单代码.目的只是传达想法
因此,我有一台处理作业的机器.作业需要工具(并且工具具有无限的生命周期).我的目的是找到作业和命令的最小列表(即AddTool和RemoveTool的实例,以便:{“ AddTool(x),” job1“,AddTool(y),” job2“}),以便得到给定的固定列表可以处理作业中不需要的工具,这些工具可以保留在机器上(只要有足够的余地即可).
我有两种方法:
>简单
逐项收集需求.由于此方法仅考虑作业i和作业i1.在机器卸载作业i 1不需要但作业i 2所需的工具的情况下,这可能不是最佳选择.这是一个不必要的删除和添加周期(假设存在可能会删除另一个不需要的工具).
>启发式
使用启发式算法,例如. G.模拟退火,最大程度地减少了使用的命令数量.
我宁愿使用简单的方法.但是我想不出另一种方法,我想简单的方法效率不高.
那我该如何解决我的问题呢?如何按照计算机科学对其进行分类?对于不专门处理作业,机器和工具的这类问题,我也将不胜感激.
解决方法:
这是hamiltonian path problem,或者是Traveling Salesman Problem(如果您稍微修改一下问题).每个作业都需要一定数量的工具,您可以确定从一个作业到另一个作业需要多少个命令.您需要通过该图的路径,以在添加/删除方面最小化“距离”并访问所有节点/作业.
内容总结
以上是互联网集市为您收集整理的java-如何找到满足要求的最小操作集全部内容,希望文章能够帮你解决java-如何找到满足要求的最小操作集所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。