在 C++ 中实现模拟非确定性有限自动机的代码

2023-11-27

我正在做自动机理论的作业,我必须确定确定性有限自动机的转换函数是否接受一个单词

我有这个输入文件:

6 8 0 2
2
5
0 0 a
0 1 a
1 1 b
1 2 c
1 3 c
3 4 d
4 4 d
4 5 d
3
aaabcccc
aabbbbcdc
acdddddd

输入以 4 个整数开始,第一个是自动机的状态数,接下来是自动机的转换数,第三个数字是初始状态,然后是最终状态数。然后是最终状态(在示例中最终状态是 2 和 5)。

然后是 N 行(N 为转移次数),每行有 2 个整数和一个字符 I、J 和 C,代表转移的状态,即从状态 i 转移到状态 J 的字符为 C。此行后面是一个整数 S,它将包含要测试的字符串数量,然后是 S 行,其中包含相应的字符串。

该程序的输出应该是:

Case #2:
aaabcccc Rejected
aabbbbcdc Rejected
acdddddd Accepted

它应该说明字符串是被接受还是被拒绝。到目前为止,我仅使用输入对工作进行了编码。

我不知道如何最方便地表示自动机。我应该简单地使用数组吗?我将对数组应用什么逻辑?有没有办法在不事先知道自动机字母表的情况下做到这一点?我需要一个数据结构来表示自动机吗?我对这个作业有点困惑,想要一些想法、一些伪代码或想法来完成它。代码是另一种语言吗?我不想要解决方案,因为我想完成我的作业,但如果我需要一些帮助


我想你可以有一张地图tr对于过渡,其中tr[(i, c)] = j如果有从i陈述到j状态通过c,最终状态的数组fs[m] where m是最终状态的数量和初始状态的整数s0.

波纹管是具有以下属性的类的框架:

class Automata
{
public:
    Automata(int start) : s0(start)
    {}

    void add_transition(int i, int j, char c) {
        //...
    }

    void add_final_state(int i) {
        //...
    }

    bool validate_string(const std::string& str) {
        //...
    }
private:
    std::map<std::pair<int, char>, int> tr; // transitions
    std::vector<int> fs; // final states
    int s0; // initial state
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C++ 中实现模拟非确定性有限自动机的代码 的相关文章

随机推荐

  • 获取拖放到字段上的资源的 URL

    我有一个带有特定输入字段的 html 页面 我想添加以下功能 用户应该能够将资源拖放到字段上 此操作的结果应该是该资源的 url 出现在该字段中 该资源可能是本地文件 导致像这样的 urlfile home me document or f
  • C# 列表仅包含

    希望找出是否有一种简单的方法来检查列表是否只包含某些列表值 例如 如果我有一个可以随机包含不同整数 1 10 即 1 3 7 或 2 3 4 6 8 9 的 int 列表 并且我想检查该列表是否仅包含 int 1和 或 5 1 或 5 或
  • PHP 访问另一个类中的类

    所以我有两个这样的课程 class foo code here foo new foo class bar global foo public function bar echo foo gt something 我想在所有方法 bar 中
  • 在seaborn条形图中绘制百分比

    对于数据框 import pandas as pd df pd DataFrame group list AADABCBCCCD Values 1 0 1 0 1 0 0 1 0 1 0 我正在尝试绘制一个显示时间百分比的条形图A B C
  • 403 tweepy 错误

    我正在尝试使用 tweepy 来使用 Python 操作 Twitter 帐户 但我似乎在第一个障碍上就失败了 无论我尝试什么 我都会收到 403 错误 但没有具体细节 import tweepy Consumer keys and acc
  • 谷歌地图:检索附近地铁站的纬度和经度?

    当查看纽约的谷歌地图时 我们可以看到很多地铁站 如何获取附近地铁站的数据 例如 我发送一个包含我所在位置的经纬度和距离半径的请求 它会返回给定距离内的地铁站 您可以使用地方图书馆为了这 通过喂养type进入请求 您可以查看支持的类型在这里
  • JavaScript 确认取消按钮不会停止 JavaScript

    我有一个删除按钮 该按钮与我所拥有的页面上的一些评论相关联 当您单击删除按钮时 我试图弹出一个确认对话框 询问您是否确定要删除评论 单击 确定 应运行删除注释的功能 单击 取消 不应运行该功能 而只是关闭对话框 这是我的代码 onclick
  • 为什么你应该更喜欢未命名的命名空间而不是静态函数?

    C 的一个特性是能够创建未命名 匿名 名称空间 如下所示 namespace int cannotAccessOutsideThisFile namespace 您可能会认为这样的功能毫无用处 因为您无法指定名称空间的名称 所以不可能从外部
  • 从二进制 dll 文件中删除 C++ 类名

    我在 Visual Studio 2010 下有一个 C 项目 它编译成 dll 我在我的项目中定义了几个私有的特定于实现的类 例如CMyClass 该类不是从 dll 或任何接口函数导出的 但是 当我检查生成的dll文件时 其中存储了一个
  • 更改子视图控制器

    我有一个视图控制器 当我按下按钮时 会出现一个子视图控制器 这工作得很好 但如果我按下其中的下一个按钮来执行两步登录 我想将此子视图控制器更改为另一个子视图控制器 任何想法 因为从主视图控制器我知道如何显示孩子 但从孩子我不知道该怎么做 如
  • 布尔运算符与按位运算符

    我很困惑何时应该使用布尔运算符和按位运算符 and vs or vs 有人可以告诉我何时使用其中一种以及何时使用其中一种会影响我的结果吗 以下是一些指导原则 布尔运算符通常用于boolean值 但通常使用按位运算符integer value
  • 如何在windowmanager中添加tinymce列表框值

    我打开一个窗口管理器并添加一个文本字段和列表框 editor windowManager open title Insert caption body type textbox name text label text multiline
  • iPhone 在运行时创建 SQLite 数据库?

    我发现的大多数 sqlite 示例都讨论首先从命令行创建 db 文件 然后将其添加到您的应用程序中 对于我的项目 我希望能够在应用程序第一次启动时创建数据库 然后将其保存到用户沙箱中的数据库文件中 有没有办法做到这一点 您可以在应用程序启动
  • Angularjs 在应用程序启动时启动 http 请求的合适时机

    我两天前刚刚开始学习 Angularjs 一个问题困扰了我两天 我需要在应用程序启动时向服务器发出 http 请求以获取一些数据 但我找不到合适的时机来执行此操作 我试过做一个controller 这称为 http get 但这不起作用 如
  • 如何从存储过程返回多行? (Oracle PL/SQL)

    我想创建一个带有一个参数的存储过程 它将根据参数返回不同的记录集 有什么方法可以做到这一点 我可以从普通 SQL 中调用它吗 以下是如何构建一个返回结果集的函数 该结果集可以像表一样进行查询 SQL gt create type emp o
  • 微软语音识别平台

    我使用 System Speech 用 C 编写了一个用于语音识别的应用程序 该应用程序在 Windows 7 上运行良好 不过 我正在创建可在 Windows 2003 x86 上运行的相同应用程序 我的编程环境 Windows 7 x6
  • Django 如何将 npm 模块与静态/模板一起使用

    我最近添加了npm添加到我的项目中 以便更好地跟踪我的 js 依赖项 以前我刚刚 git 克隆到我的 static vendor 文件夹 我还添加了gulp 但现在只让它做 hello world 的事情 它看起来很简单 它可以监视文件 缩
  • 有没有办法使用 Python 访问 OS X wi-fi 数据? (例如信号强度)

    我只是好奇是否可以使用任何 Python 工具来轮询 OS X 中的 Wi Fi 信号强度 我的大多数搜索都只是生成适用于 Linux 的 Python 工具 但没有找到适用于 OS X 的 Python 工具 如果没有 是否有其他方法可以
  • 使用 AdMob 展示我自己的广告?

    我已将 AdMob 集成到我的应用程序中 是否可以使用 Admob 展示我自己的广告 如果没有 那么最好的选择是什么 是的 Ad Mob 允许您选择使用 自家广告活动 选项 话虽这么说 如果通过 使用 Admob 展示我自己的广告 你的意思
  • 在 C++ 中实现模拟非确定性有限自动机的代码

    我正在做自动机理论的作业 我必须确定确定性有限自动机的转换函数是否接受一个单词 我有这个输入文件 6 8 0 2 2 5 0 0 a 0 1 a 1 1 b 1 2 c 1 3 c 3 4 d 4 4 d 4 5 d 3 aaabcccc