在我看来,状态和转换可以分别用页面和超链接在 HTML 中表示,这似乎很清楚。有了这个,可以实现deterministic finite automata,点击链接在状态之间转换。例如,我实现了一些简单的 DFA,可以访问 here。
DFA 比图灵机简单得多。为了实现更接近 TM 的东西,除了基本的状态/转换功能之外,还需要一个涉及读取和写入内存的额外机制。但是,HTML 似乎没有这种特性。所以我会说 HTML 不是图灵完备的,但能够模拟 DFA。
编辑:写这个答案时,我想起了视频On The Turing Completeness of PowerPoint。
编辑:用 DFA 定义和说明补充这个答案。
定义
来自https://en.wikipedia.org/wiki/Deterministic_finite_automaton#Formal_definition
在计算理论中,理论计算机的一个分支
科学,确定性有限自动机 (DFA),也称为
确定性有限接受器 (DFA),确定性有限状态
机器(DFSM)或确定性有限状态自动机(DFSA)——是
接受或拒绝给定字符串的有限状态机
符号,通过运行由唯一确定的状态序列
字符串。
确定性有限自动机 M 是一个 5 元组,(Q, Σ, δ, q0, F),
由
组成
- 有限状态集 Q
- 一组有限的输入符号,称为字母表 Σ
- 一个转移函数 δ : Q × Σ → Q
- 初始或开始状态 q0
- 一组接受状态 F
下面的例子是一个 DFA M,带有一个二进制字母表,它
要求输入包含偶数个 0。
M = (Q, Σ, δ, q0, F) 其中
- Q = {S1, S2}
- Σ = {0, 1}
- q0 = S1
- F = {S1} 和
- δ 由以下状态转换表定义:
M 的状态图:
状态 S1 表示有偶数个 0 在
到目前为止的输入,而 S2 表示奇数。输入中的 1
不会改变自动机的状态。当输入结束时,
state 将显示输入是否包含偶数个 0 或
不是。如果输入确实包含偶数个 0,则 M 将在
state S1,一个接受状态,所以输入的字符串会被接受。
HTML 实现
上面举例说明的 DFA M 以及一些最基本的 DFA 在 Markdown 中实现,并由 Github 转换/托管为 HTML 页面,可访问 here。
按照M的定义,其HTML实现详述如下。
- 状态集Q包含页面
s1.html和s2.html,还有接受页面acc.html和拒绝页面rej.html。这两个附加状态是一种“用户友好”的方式来传达单词的接受情况,并且不会影响 DFA 的语义。
- 符号集合 Σ 定义为符号 0 和 1。还包括空字符串符号 ε 以表示输入的结束,导致
acc.html 或 rej.html 状态。
- 初始状态q0为
s1.html。
- 接受状态集是 {
acc.html}。
- 过渡集由超链接定义,这样页面
s1.html 包含一个链接,其中文本“0”指向s2.html,文本链接“1”指向s1.html,以及文本链接“ ε" 导致acc.html。根据下面的转换表,每一页都是类似的。 Obs:acc.html 和 rej.html 不包含链接。
|
0 |
1 |
ε |
| s1.html |
s2.html |
s1.html |
acc.html |
| s2.html |
s1.html |
s2.html |
rej.html |
问题
- 这些 HTML 页面以何种方式成为“机器”?这些机器不包括浏览器和点击链接的人吗?链接以何种方式执行计算?
DFA 是一个抽象机器,即一个数学对象。通过上面所示的定义,它是一个元组,根据一组符号定义状态之间的转换规则。这些规则的实际实现(即 谁 跟踪当前状态,查找转换表并相应地更新当前状态)超出了定义的范围。就此而言,图灵机是一个similar tuple,其中包含更多元素。
如上所述,HTML 实现完整地表示了 DFA M:每个状态和每个转换分别由一个页面和一个链接表示。浏览器、点击次数和 CPU 在 DFA 的上下文中是不相关的。
换句话说,正如@Not_Here 在 cmets 中所写:
规则本身不会自行实现,它们只是规则
应遵循实施。这样考虑:图灵机
不是真正的机器,图灵没有制造机器。他们纯粹
数学对象,它们是集合(状态、符号)的元组和
状态之间的转换函数。图灵机纯粹是
数学对象,它们是关于如何
实现一个计算,HTML 中的这个例子也是如此。
abstract machines 上的维基百科文章:
抽象机器,也称为抽象计算机,是一种
用于定义计算模型的理论计算机。
计算过程的抽象用于计算机
科学和计算机工程学科,通常假设
离散时间范式。
在计算理论中,抽象机器常用于
关于可计算性的思想实验或分析
算法的复杂性(参见计算复杂性理论)。一种
典型的抽象机器由输入方面的定义组成,
输出,以及用于转动前者的一组允许操作
进入后者。最著名的例子是图灵机。