是否有人知道使用超图来实现或代表不确定图灵机的任何论文,文本或其他文件?它们实际上是等同的吗?
我非常确定超图能够正确完整地表示非确定性图灵机的状态转换。但到目前为止,我还没有找到任何可以验证这一点的印刷品。在我看来,这似乎是一种如此明显的关系,但事实上,我没有找到现有的艺术,这让我觉得我走错了路。 (也可能是我发现的东西不足以让我理解它的含义。); - )
为什么我要问:我正在开发一个开源软件包,它在对等网络中进行分布式数据存储和分布式计算。我正在寻找可能支持所需功能的最原始的数据结构。到目前为止,分布式超图看起来很有希望。我的理由是,如果超图可以支持像非确定性图灵机一样通用的东西,那么它应该能够支持更高级别的图灵完整DSL。 (还有其他原因,“非确定性”部分也可能对我有价值,与分布式数据和/或计算结果的版本控制有关。虽然试图避免论文。)
部分答案:
答案 0 :(得分:1)
超图只是一个图G=(V,E)
,其中V
是顶点(节点)的集合,E
是V
的幂集的子集。这是一种数据结构。
因此,常见的图形只是一个等级为2的超图。(即E中的每个集合恰好包含两个顶点)。有向超图使用对(X,Y)
作为设置X
和Y
的边。
如果您想为图灵机建模,那么您需要对“胶带”进行建模。你想要磁带'嵌入'在图中?我想你可能会有更多关于Church-Turing论文(Alonso Church,Lambda calculus)的运气。 Lambda演算是一种重写系统,并且肯定有一个使用Graph重写(和hypergrpahs)的分支。
当然,转换可以建模为图形(我不确定你的想法,但是直接的方法并没有真正帮助) 如果你正常建模它你可能会创建一个字典/ hashmap,其中元组为键(State,Symbol),值为(State,Rewrite,Left | Right)。例如
states = {1,2,3}
symbols = {a,b,c}
moves = L, R
delta = { (1,a) -> (1,b,R)
(1,b) -> (2,c,L)
...
}
所以如果你想要一个图形,你首先需要V =状态U符号U移动。 显然,他们需要脱节。 如{1,a} - >根据定义,{1,b,R}等于{a,1} - > {b,R,1}等。
states = {1,2,3}
symbols = {a,b,c}
moves = L, R
V = {1,2,3,a,b,c,L,R}
E = { ({1,a},{1,b,R})
({b,1},{L,2,c})
...
}
turing-hypergraph = (V,E)
正如我之前提到的,查找图形重写或术语重写。