编程语言
首页 > 编程语言> > java-如何执行随机算法

java-如何执行随机算法

作者:互联网

对于我正在从事的项目,我希望能够生成并执行随机算法(相信我,这是有充分理由的!)根据Alan Turings的原始论文,可以为每个TM分配一个唯一的编号(更多现代的理解方式是,每个程序都以二进制形式编译为某个唯一的大长整数.

假设我有这么长的号码.现在如何执行与此相对应的程序?

语言在这里并不是很重要,如果它包含使之更容易的机制,我很乐意选择其他语言.无论您选择哪种语言都很难,我会​​精通Java.

如果您建议了另一种生成随机算法的方法也可以,尽管请记住,我最终将更改逻辑,以使用某种启发式方法来选择算法,而不是纯粹的随机性.

解决方法:

您需要做的是找出一种方法-以任何方式-生成给定整数的程序.实现此目的的“标准”方法是选择一种任意的编程语言(例如Java),并想象与合法的,正在编译的Java程序的文本相对应的每个可能的字符串,然后想象这些字母按字母顺序排序.这是所有Java程序上定义明确的顺序,因此,只要有此顺序,就可以通过使程序位于给定的索引处来将列表中的任何数字转换为程序.

不幸的是,这对于算法来说不太实用;您只需要枚举不计其数的字符串即可到达列表中的第一个元素,更不用说2134345423532243或其他任何元素了.每个程序都是一个字符串,但是绝大多数字符串都不是合法程序.在将程序解释为巨大的二进制数时存在相同的问题:每个程序都是一个数字,但是几乎没有数字是程序.

因此,如果您实际上对生成真实程序感兴趣,而又不花所有时间来生成根本不是合法程序的虚假程序,则您需要做一些更聪明的事情.一种实现方法是,将您的数字作为随机数生成器的种子,然后根据对RNG的连续调用,随机生成一个带有随机寄存器的汇编指令.

标签:computation-theory,random,language-agnostic,java
来源: https://codeday.me/bug/20191031/1978442.html