您可能需要阅读两次,以便我的想法变得清晰。请耐心等待 我正在寻找现有的工作,以便针对特定问题进行详尽的搜索算法。穷举搜索也称为强力搜索,或简称为暴力搜索。
其他详尽的搜索算法搜索给定问题的解决方案。通常,这种问题的解决方案是满足某些要求的一些数据。
穷举搜索示例:
您想要解决KNAPSACK问题。这是可以装入袋子的物品,因此没有其他物品组合装入袋子,并且总和比你的结果组合更大的价值。
您可以通过遍历所有可能的组合(详尽无遗)来解决这个问题,并搜索适合包中的那个,哪个是这些组合中最有价值的组合。
我正在寻找的只是穷举搜索的一个特例:穷举搜索搜索算法作为解决方案。所以最后,我正在寻找一种算法来搜索解决某些特定问题的算法。
你可能会说:go go go it it。嗯,是的,我已经做到了。我在这里面临的困难是谷歌搜索“搜索另一种算法的算法”导致与“另一种搜索算法”完全相同。显然,这有太多不必要的结果,所以我被困在这里。
如何找到与详尽搜索算法相关的现有工作? 更具体地说:有没有为此编写过的软件?你能指点我关于这个主题的任何链接或算法名称/更好的关键词吗?
更新:
我正在寻找这种算法搜索的目的是解决没有好的启发式算法的问题,例如,推算算法或尝试寻找其他可能或可能不是NP完全问题的解决方案算法(从而证明如果可以找到更快的算法,问题不是NP完全的;没有任何人为干预)。
答案 0 :(得分:2)
您似乎正在寻找“程序综合”,它可以在一些有限的实例中工作,前提是您可以正确且正式地指定算法应该执行的操作(不提供实现)。 综合是构建门级电路的有效方法,但将合成应用于软件到目前为止仍然是一个研究途径而非实际。
不过,这里有几个关于这个主题的参考资料,
(在我看来,该领域最先进的一些工作,有一个工具) Armando Solar-Lezama的程序草图
查看关于该主题的Microsoft研究页面,他们认为这是热门话题:http://research.microsoft.com/en-us/um/people/sumitg/pubs/synthesis.html
我见过的其他一些类似的东西: 基于模型检验的遗传规划及其在互斥中的应用。 (Katz& Peled @ TACAS '08),他们在ArXiv上有一个更新的版本:http://arxiv.org/abs/1402.6785
基本上,使用模型检查器(详尽地)探索搜索空间。
答案 1 :(得分:1)
我不认为这是可能的(至少没有对算法类别的某些限制),并且无论如何,搜索空间会如此之大,以至于通过比较它会使普通的暴力驯服。例如,您可以枚举特定计算模型的算法(例如图灵机),但随后停止问题就会出现问题 - 您如何判断它是否能解决您的问题?如果您有一系列依赖于离散参数的算法,那么您当然可以强制选择参数。
有关遗传编程的大量文献(见https://en.wikipedia.org/wiki/Genetic_programming)。这可能会让你有所作为。特别是 - 在这种情况下经常使用的树数据结构(本质上是表达式树或更一般地说是抽象语法树)可以允许强力枚举。
答案 2 :(得分:1)
查看来自Google DeepMind的Alex Graves,Greg Wayne和Ivo Danihelka的Neural Turing Machines。
摘要:
我们通过耦合它们来扩展神经网络的能力 外部内存资源,它们可以通过注意力与之交互 流程。组合系统类似于图灵机或Von Neumann架构但是端到端是可区分的,允许它 有效地训练梯度下降。初步结果 证明神经图灵机可以推断出简单的算法 例如从输入和输出中复制,排序和关联召回 实例强>
答案 3 :(得分:1)
我使用遗传编程为旅行推销员问题演变/生成启发式算法。在测试问题(随机图和从TSPLIB获取的其他图)上,演化启发式优于最近邻。如果您需要源代码,可以从此处下载:http://www.tcreate.org/evolve_heuristics.html
答案 4 :(得分:1)
This paper在lambda演算中表示的小型安全功能程序空间中执行详尽的枚举。