- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对算法有非常基本的了解。我是数学专业的毕业生。我正在阅读苏珊娜·埃普 (Susanna Epp) 的《离散数学与应用》一书中的停止问题。它有以下定理:
Theorem : There is no computer algorithm that will accept any algorithm X and data set D as input and then will output "halts" or "loops forever" to indicate whether or not X terminates in a finite number of steps when X is run with data set D.
Proof : Suppose there is an algorithm, call it CheckHalt, such that if an algorithm X and a data set D are input, then CheckHalt prints "halts" if X terminates in a finite number of steps when run with the data set D or "loops forever" if X does notterminate in a finite number of steps when run with data set D.
Now next lines are those which I don't understand in this proof
Observe that the sequence of characters making up an algorithm X can be regarded as a data set itself. Thus it is possible to consider running a CheckHalt with input (X,X).
所以我了解到,CheckHalt 本质上是作为算法 X 和数据集 D 获取输入。它告诉我们是否使用该数据集 D 运行算法 X 作为它(X 的)输入,然后 X 将停止或永远循环.因此 CheckHalt(X,D) 看起来不错。
我的问题是算法 X 如何拥有输入 X 本身,即我们如何将算法称为数据集?
“构成算法 X 的字符序列”这句话是什么意思?
我可以理解 CheckHalt(X,D)。但是什么是 CheckHalt(X,X)?
谢谢。
最佳答案
考虑以下算法来反转字符串:
function reverse(s) {
var ret = "";
for (var i = s.length - 1; i >= 0; i--) {
ret = ret + s[i];
}
return ret;
}
它接受一个字符串作为输入,并返回一个字符串。现在考虑以下输入数据集:
"function reverse(s) {\n"
+ " var ret = \"\";\n"
+ " for (var i = s.length - 1; i >= 0; i--) {\n"
+ " ret = ret + s[i];\n"
+ " }\n"
+ " return ret;\n"
+ "}"
这是一个字符串。它恰好是一个编码算法源代码的字符串。因为它是一个字符串,所以它是接受字符串的算法的有效输入;就像它恰好编码的算法一样。实际上,如果将此算法(的编码)传递给自身,您将获得以下明确定义的输出:
"}"
+ ";ter nruter "
+ "} "
+ ";]i[s + ter = ter "
+ "{ )--i ;0 => i ;1 - htgnel.s = i rav( rof "
+ ";"" = ter rav "
+ "{ )s(esrever noitcnuf"
以同样的方式,如果你有一个程序 X
带有字符串编码 enc(X)
并且 X
接受一个字符串,你可以将enc(X)
传递给X
。如果您有另一个采用两个字符串的算法,您可以将 enc(X)
作为两个参数传递。
关于algorithm - 理解 CheckHalt(X,X) 在 Susanna Epp 的 Discrete Mathematics with applications 定理证明中的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45490653/
我有一个 Python 编码任务似乎是装箱问题或背包问题的某种变体,我不完全确定。我有一个似乎可行的选项,但我不认为它本身是正确的解决方案,因为可能存在可能失败的边缘情况。 (我不是 CS 或数学专业
预处理的作用主要在于将难以表达的string或者数组转换成模型容易训练的向量表示,其中转化过程大多是形成一张查询表用来查询。 常见的预处理方式包括: class Discreti
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我正在寻找一种使用离散和快速方法计算导数的方法。由于现在我不知道我拥有的方程类型,我正在寻找类似于我们可以为积分找到的离散方法,例如欧拉方法。 最佳答案 我认为您正在寻找以点计算的导数。 如果是这种情
Discrete mathematics (also finite mathematics)涉及逻辑、集合论、信息论、偏序集、证明、关系和许多其他主题等主题。 对于数学的其他分支,有支持编程的工具。统
我报名了一个我不应该参加的类(class)。所以现在我有点搞砸了,因为我不明白我的教授解释一阶逻辑时使用的任何符号。我需要一些关于如何重新学习所有这些东西的书籍建议。例如:我对“量词”是什么感到困惑(
我实现了一种称为离散余弦变换的图像/视频变换技术。该技术用于 MPEG 视频编码。我的算法基于以下 URL 中提出的想法: http://vsr.informatik.tu-chemnitz.de/~
我有以下数据: benchmark mispredpenal IPC pred ammp 1 1.0589 2lev ammp
我正在阅读 Inside The C++ Object Model 并发现对内联函数扩展感到困惑。 In general, each local variable within the inline
我正在制作类似于 Polyworld 的东西,这意味着我将模拟小爬行者在其中跑来跑去、进食和进化的虚拟世界。我正在用 Node.js 做,我计划使用物理和神经网络,但我不确定更新世界的最佳方式是什么,
我正在尝试使用 ggplot2 构建一个自定义 stat 函数,其中我想访问一个离散变量来计算每组的统计数据。但是,ggplot 层的默认行为是自动将隐式组分配给任何离散变量(主要是)。这意味着我的数
我似乎无法得到我的 ggparcoord使用离散比例绘制颜色。当我这样做时: ggparcoord(data = iris, columns = 1:4, groupColumn = "Species
假设我有两个浮点数,x和 y ,它们的值非常接近。 计算机上可以表示离散数量的浮点数,因此我们可以按升序枚举它们:f_1, f_2, f_3, ... .我想找到x的距离和 y在这个列表中(即它们是
我用 ggplot2 制作了一个散点图,并将一个二进制变量映射到点大小。结果令人满意,但我收到警告“不建议使用离散变量的大小”。 我知道使用大小来映射具有多个级别的非有序分类变量可能不如使用点形状或不
我正在尝试为离散结果(每个值使用单一颜色)制作热图,以便: df<-data.frame(x=rep(LETTERS[1:10], each=10), y=rep(1:1
我正在使用 ggmap 处理马达加斯加 map myMap <- get_map(location=k, source="stamen", maptype="toner", crop=FALSE,
我有下表,但经过多次尝试无法绘制数据,以便 x 轴刻度线与 year 对齐。 .我找到了箱线图的解决方案,但不是 geom_line() 我怎样才能制作一年的离散标签? 以下解决方案不起作用 g +
我想将离散(标识符)变量转换为一系列逻辑列,以便我可以将该变量用作逻辑回归函数(和其他函数)中的特征,而我无法混合连续值和离散值。 我在数据框中有一个因子列,我想将该列转换为逻辑值的列矩阵(1..“级
我已经阅读了许多关于什么可能导致“离散值提供给连续尺度”错误的 SO 答案,但我仍然无法解决以下问题。就我而言,错误是由使用 annotate() 引起的。 .如果去掉+ annotate(...)一
我有一个名为“merged”的数据集,其中包含 3 个数字列“pauseMedian”和“numTotalPauses”和“diff”。我还有一个 splineHull 数据集,其中还包含数字列“pa
我是一名优秀的程序员,十分优秀!