热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

在下推自动机中以相反的顺序推送/弹出堆栈

如何解决《在下推自动机中以相反的顺序推送/弹出堆栈》经验,为你挑选了1个好方法。

所以我正在研究我已经提出的下推自动机和无上下文语言的测试,我坚持这个结构.

我让这个自动机的每个部分都完全正常工作,除了我将在下面解释的一个部分.

它需要识别的语言是:{x#y#z#w | x,y,z,w在{0,1} +中,其中x≠w且y≠z}.

所以我遇到的问题是将Xi与Wi进行比较,因为Wi的元素在自动机处理W时是不知道的,就像我设计的那样.

如果我存储X的内容,当弹出时间并将每个元素与W的元素进行比较时,它们将以相反的顺序弹出,因此认为000111和111000是相同的字符串,而PDA将拒绝,当它应该明确接受(它们是不同的字符串).这只是一个例子,这也会导致错误地分析其他输入.

如果有一种方法可以按相反的顺序将X的内容压入堆栈,它们将以原始形式弹出,这样我就可以正确地比较字符串的内容.

如果在正常推送后有一种方法可以反转堆栈的内容,这也可以让我得出解决方案.

任何帮助将不胜感激.谢谢.



1> 小智..:

解决方案有点棘手.

实际上没有办法在PDA中反转堆栈的内容.这完全是关于npda的非确定性特性,这使得这个问题可以解决.

从这个更简单的版本开始

L = {x#w: x,w in {0,1}+ and x?w}.

解:

从状态q开始.推$对于x的每一个字母直到第k个字母(K并不重要,选择k不确定性),然后检查k个信去Q0,如果它是0还是去Q1,如果它是1.忽略x的其余部分,直到达到#.为w的每个字母弹出一个$,直到到达堆栈的底部(比如z).检查w的第k个字母.如果[你是在q0并且字母不是0 ]或[你在q1并且字母不是1 ]接受.

就是这样,巫术!


推荐阅读
  • 本题要求判断给定的二叉树是否为镜像对称。通过递归和迭代两种方法,可以有效地解决这一问题。例如,二叉树 [1,2,2,3,4,4,3] 是对称的,而 [1,2,2,null,3,null,3] 则不是。 ... [详细]
  • 本文探讨了如何使用pg-promise库在PostgreSQL中高效地批量插入多条记录,包括通过事务和单一查询两种方法。 ... [详细]
  • Linux环境下Git安装及常见问题解析
    本文详细介绍了在Ubuntu系统中安装Git的过程,包括环境检查、软件安装、用户配置以及SSH密钥生成等步骤,并针对安装过程中可能出现的问题提供了有效的解决方案。 ... [详细]
  • 本章探讨了使用固定数组实现栈和队列的基本方法,以及如何通过这些基本结构来实现更复杂的操作,如获取栈中的最小值。此外,还介绍了如何利用栈来模拟队列的行为,反之亦然。 ... [详细]
  • Canvas漫游:碰撞检测与动画模拟
    探索Canvas在Web开发中的应用,通过碰撞检测与动画模拟提升交互体验。 ... [详细]
  • 在该问题中,若存在一个节点x满足特定条件,则x所在的强连通分量(SCC)同样满足条件。合法的SCC数量最多为1,因为多个SCC之间具有传递性,理论上应能合并。本文将通过拓扑排序和缩点技术来探讨这一算法的实现。 ... [详细]
  • 本文详细介绍了在使用 GitHub 进行代码推送时遇到 'failed to push some refs' 错误的解决方案,包括具体原因分析和操作步骤。 ... [详细]
  • Git支持通过自定义钩子来扩展其功能,这些钩子根据触发条件的不同,可以分为客户端和服务器端两种类型。客户端钩子通常与本地操作相关联,如提交代码或合并分支;而服务器端钩子则与远程仓库的交互有关。 ... [详细]
  • 近期,谷歌公司的一名安全工程师Eduardo Vela在jQuery Mobile框架中发现了一项可能引发跨站脚本攻击(XSS)的安全漏洞。此漏洞使得使用jQuery Mobile的所有网站面临潜在的安全威胁。 ... [详细]
  • 题目描述了一个病毒检测问题,要求使用AC自动机算法统计目标文本中多个模式串的出现次数。 ... [详细]
  • Redis并发控制与集群管理
    本文探讨了在高并发场景下使用Redis进行并发控制的方法,以及如何通过Redis集群和可视化工具提升系统的稳定性和可维护性。 ... [详细]
  • Julia:一种从数组数组中获取矩阵的快速而优雅的方法 ... [详细]
  • 题目概述:给定一棵带颜色节点的树,目标是找到一种方法,通过删除某些边使得每个连通分量内的节点颜色相同。需要计算出所有可能的合法边集的数量。使用动态规划的方法,特别是树形DP来解决问题。 ... [详细]
  • 本文记录了Android学习的初期阶段,包括Android的基本架构、Dalvik虚拟机与JVM的区别、ADB工具的使用以及应用程序的打包安装流程。 ... [详细]
  • C++ 中的可调用对象及其应用
    本文介绍了 C++ 中的可调用对象概念,包括函数指针、仿函数、类成员函数指针等,并详细探讨了 `std::function` 和 `std::bind` 在统一处理这些可调用对象时的作用和实现方法。 ... [详细]
author-avatar
待续爱情2502861755
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有