我不明白非确定性图灵机的概念[关闭]
Posted
技术标签:
【中文标题】我不明白非确定性图灵机的概念[关闭]【英文标题】:I do not understand the concept of Non Deterministic Turing Machine [closed] 【发布时间】:2012-11-11 12:27:44 【问题描述】:我不明白非确定性图灵机的概念。我想我理解术语非确定性算法:(非确定性算法是一种算法,可以在不同的情况下表现出不同的行为 运行,而不是确定性算法。)所以算法可能是这样的:
a = fromSomeAlgo();
if(a > foo)
stateA();
else
stateB();
但对于非确定性图灵机 I read ,它可以在给定时间处于多个状态。还有wikipedia article 建议 “非确定性图灵机 (NTM) 可能有一组规则,规定更多 给定情况下的一个动作”。
这是什么意思? ..针对给定情况的多个操作...多个状态...我只是不明白这一点。
【问题讨论】:
查看cs.odu.edu/~toida/nerzic/390teched/tm/othertms.html,最后看到“图灵机接受a+”。它是解决方案空间的更具描述性的模型。用“有形”术语来说,一组并行处理器,每个处理器都为下一个状态应用一个规则,并且它们彼此不接触。 我认为这些管理员关闭了他们不喜欢的问题。感谢管理员让 Stack Overflow 变得更加无用。 @AkshayLAradhya:嗯,恕我直言,这类问题在Computer Science Stack Exchange 上更热门。 【参考方案1】:在非确定性图灵机中,在每个分支中——你都可以做这两种可能性——只有当你完成后,你才能“选择”哪一个是你需要的解决方案(如果存在的话)。
例如,让我们看一下subset sum problem,与S = a,b,c...
。非确定性图灵机有一个线性解:
for each element:
"guess" if it is in the subset
check if the subset has the specified sum
生成的树会是这样的:
start
with a without a
/ \ / \
/ \ / \
/ \ / \
with b without b with b without b
/ \ / \ / \ / \
with c without c with c without c with c without c with c without c
一个计算(树中的路径)是正确的就足够了,以便算法产生“真”。只有在没有这样的计算时才会产生“假”。
非确定性图灵机的概念纯粹是理论上的 - 没有可用的非确定性图灵机。
奖励: 请注意,可以使用非确定性图灵机完成的所有事情 - 都可以使用确定性图灵机完成(反之亦然) - 例如,Halting Problem 在两者中都无法确定。但是,NPC 问题可以在非确定性图灵机中以多项式方式完成,我们不知道(并且我们假设我们不能)如何在确定性图灵机上以多项式方式完成。
【讨论】:
非确定性 TM 的存在程度与确定性 TM 相同。两者都不存在,因为所有真实的计算机都有有限的存储空间,但我们可以模拟它们。最大的区别在于,模拟 NDTM 的时间往往在模拟的步数上呈指数增长,而不是线性增长。模拟器必须跟踪机器在给定步骤结束时可能处于的所有配置。 DTM 模拟器一次只需要跟踪一个配置。 @PatriciaShanahan:这并不完全正确。尽管我们有“有限存储”,但 RAM 机器也可以使用磁盘来存储数据。可以存储在磁盘上的数据容量受到非现实数字的限制(并且可以在算法运行时即时增加)。然而——如果你尝试着冷酷无情地去做——是的,宇宙中的原子数量是有限的,因此一个人可以实现的状态/配置的数量也是有限的。 大大简化了概念。我正在为这个问题绞尽脑汁,因为我遇到的大多数定义都过于学术化,难以理解。 非确定性图灵机的概念纯粹是理论上的——没有可用的非确定性图灵机。有很大帮助。以上是关于我不明白非确定性图灵机的概念[关闭]的主要内容,如果未能解决你的问题,请参考以下文章