生成随机确定性有限自动机的算法是什么?

2024-02-23

DFA 必须具有以下四个属性:

  • DFA 有 N 个节点

  • 每个节点有 2 个传出转换。

  • 每个节点都可以从其他每个节点访问。

  • 从所有可能性中以完全一致的随机性选择 DFA

这是我到目前为止所拥有的:

  1. 从 N 个节点的集合开始。
  2. 选择一个尚未选择的节点。
  3. 将其输出连接到另外 2 个随机选择的节点
  4. 将一个转换标记为 1,将另一个转换标记为 0。
  5. 除非已选择所有节点,否则转至 2。
  6. 确定是否存在没有传入连接的节点。
  7. 如果是这样,则从具有超过 1 个传入连接的节点窃取传入连接。
  8. 转至6,除非不存在没有传入连接的节点

然而,这个算法是不正确的。考虑该图,其中节点 1 有两个连接到节点 2(反之亦然),而节点 3 有两个连接到节点 4(反之亦然)。那是这样的:

1 2

3 4

其中, 是指​​双向两个传出连接(因此总共 4 个连接)。这似乎形成了 2 个派系,这意味着并非每个状态都可以从其他状态到达。

有谁知道如何完成算法吗?或者,有人知道另一种算法吗?我似乎隐约记得二叉树可以用来构造这个,但我不确定。


强连通性是一个困难的约束。让我们生成均匀随机数满射的转换函数,然后用例如测试它们Tarjan 的线性时间 SCC 算法,直到我们得到强连接的算法。这个过程有正确的分布,但不清楚它是否有效;我的研究人员的直觉是,强连通性的极限概率小于 1 但大于 0,这意味着预期只需 O(1) 次迭代。

生成满射过渡函数本身就很重要。不幸的是,如果没有这个约束,每个状态都有传入转换的可能性呈指数级增长。使用答案中描述的算法这个问题 https://stackoverflow.com/questions/2161406/how-do-i-generate-a-uniform-random-integer-partition对包含 N 个部分的 {(1, a), (1, b), (2, a), (2, b), …, (N, a), (N, b)} 的均匀随机分区进行采样。随机排列节点并将它们分配给部分。

例如,令 N = 3 并假设随机划分为

{{(1, a), (2, a), (3, b)}, {(2, b)}, {(1, b), (3, a)}}.

我们选择随机排列 2, 3, 1 并导出一个转换函数

(1, a) |-> 2
(1, b) |-> 1
(2, a) |-> 2
(2, b) |-> 3
(3, a) |-> 1
(3, b) |-> 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生成随机确定性有限自动机的算法是什么? 的相关文章

  • 将整数列表划分为总和相等的 K 个子列表

    类似的问题还有1 https stackoverflow com questions 27322804 partition of a set into k disjoint subsets with equal sum and 2 http
  • Python 中的空填字游戏求解器

    我得到了一个包含填字游戏蓝图的矩阵 当然 它是空的 我们的目标是填补整个难题 这是 Checkio 的一项任务 我已经为此奋斗了相当长一段时间 根据我对复杂性的理解 这个问题没有完美的算法 不过 必须有最好的方法来做到这一点 对吧 我尝试了
  • 图像算法上的物体计数

    我又接到学校任务了 这次 我的老师给我的任务是创建算法来计算图片上有多少只鸭子 该图与此类似 我想我应该使用模式识别来搜索上面有多少只鸭子 但我不知道每只鸭子适合哪种图案 我认为你可以通过分割鸭嘴并计算鸭嘴的数量来解决这个问题连接的组件 h
  • .php 随机图像在外部站点上作为 .jpg

    我发布的论坛只允许从外部 URL 加载 jpg png 和 gif 图像 我想解决这个问题 并从服务器上的目录中随机选择一个动态头像 但我无法使其正常工作 可能是由于在外部站点上执行了额外的检查 或者我的代码中存在错误 到目前为止 我已经在
  • Google 文档如何处理编辑冲突?

    我一直在尝试编写自己的 Javascript 编辑器 其功能类似于 Google Docs 允许多人同时使用 我不明白一件事 假设用户 A 和用户 B 直接相互连接 网络延迟为 10 毫秒 我假设编辑器使用 diff 系统 据我了解 Doc
  • C++11 随机数

    我需要生成随机数 但范围尽可能广泛 至少 64 位 我不在乎分布是否完美 所以std rand 会起作用 但它只返回一个int 据我所知 c 11 具有一些随机数生成功能 可以给出任何大小的数字 但使用起来非常复杂 有人可以发布一个简单的示
  • 查找文本中所有关键字的有效算法

    我有很多字符串 其中包含许多不同拼写的文本 我通过搜索关键字来标记这些字符串 如果找到关键字 我将使用该关键字的关联文本 假设搜索字符串可以包含文本 schw schwa 和 施瓦茨 我有三个关键字 全部解析为文本 schwarz 现在我正
  • 计算字符串的所有子串中子序列的出现次数

    我想编写一个算法来计算字符串的所有子字符串中字符子序列 不相交 出现的总数 下面是一个例子 字符串 jabcohnnyjohnny 后续 约翰尼 包含子序列的子字符串 jabcohnny jabcohnnyj jabcohnnyjo jab
  • rand() 的实现

    我正在用 C 编写一些嵌入式代码 需要使用 rand 函数 不幸的是 控制器的库不支持 rand 我需要一个快速的简单实现 但更重要的是空间开销很小 可以产生相对高质量的随机数 有谁知道使用哪种算法或示例代码 编辑 它用于图像处理 因此 相
  • 素数生成器算法

    我一直在尝试解决素数生成算法的SPOJ问题 这是问题 彼得想为他的密码系统生成一些素数 帮助 他 你的任务是生成两个给定之间的所有素数 数字 Input 输入以单行中测试用例的数量 t 开始 t Output 对于每个测试用例 打印所有素数
  • 如何将多边形放入另一个多边形内[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有两个多边形 如下图所示 左边是 粗多边形 右边是 最终多边形 现在 我正在寻找算法来将 最终多边形 拟合到 粗糙多边形 内 并具有
  • 什么是“朴素”算法,什么是“封闭式”解决方案?

    我有一些关于描述算法时使用的术语语义的问题 首先 朴素 算法是什么意思 这与给定问题的其他解决方案有何不同 解决方案还可以采取哪些其他形式 其次 我听到很多人提到 封闭式 解决方案 我也不知道这意味着什么 但在尝试解决递归关系时经常会出现
  • Java 2d 游戏中的路径查找?

    本质上它是我正在开发的一款吃豆人克隆游戏 我有一个 Enemy 类 并创建了该类的 4 个实例 它们都代表游戏的 4 个幽灵 所有幽灵都会在屏幕的随机区域启动 然后它们必须朝着吃豆人角色前进 当玩家控制吃豆人并移动它时 他们应该跟随它并尽可
  • 重写修改后的 goto 语义的算法

    我有一大堆使用旧的自行设计的脚本语言编写的遗留代码 我们将它们编译 翻译成 javascript 该语言有条件跳转 跳转到标签 与普通 goto 语句的区别在于 不可能向后跳转 该语言中没有嵌套的 if 语句或循环 由于 javascrip
  • 我应该对算法使用递归还是记忆化?

    如果我可以选择使用递归或记忆来解决问题 我应该使用哪一个 换句话说 如果它们都是可行的解决方案 因为它们提供了正确的输出并且可以在我正在使用的代码中合理地表达 那么我什么时候会使用其中一个而不是另一个 它们并不相互排斥 您可以同时使用它们
  • 总和不小于 key 的数组的最小子集

    给定一个数组 假设为非负整数 我们需要找到最小长度子集 使得元素之和不小于 K K 是作为输入提供的另一个整数 是否有可能找到时间复杂度为 O n n 的大 oh 的解决方案 我目前的想法是这样的 我们可以在 O n log n 中对数组进
  • 我可以有效地从 HashSet 中随机采样吗?

    我有一个std collections HashSet 我想采样并删除一个均匀随机的元素 目前 我正在做的是使用随机抽样索引rand gen range 然后迭代HashSet到该索引来获取元素 然后我删除选定的元素 这可行 但效率不高 有
  • suhosin.mt_srand.ignore 在 PHP 中一致洗牌数组的解决方法?

    我有一个 PHP 脚本 需要随机化一个具有一致结果的数组 这样它就可以向用户呈现前几个项目 然后如果他们愿意 他们可以从同一个打乱的集合中提取更多结果 我目前使用的是这个 基于我相信的 Fisher Yates 算法 function sh
  • 使用什么算法来确定使系统达到“零”状态所需的最小操作数?

    这是一种更通用的问题 不是特定于语言的 有关要使用的想法和算法的更多信息 系统如下 它登记朋友群体之间的小额贷款 Alice and Bill要去吃午饭 比尔的卡坏了 所以爱丽丝支付了他的餐费 10 美元 第二天Bill and Charl
  • 删除近排序数组中未排序/离群元素

    给定一个像这样的数组 15 14 12 3 10 4 2 1 我如何确定哪些元素乱序并删除它们 在本例中为数字 3 我不想对列表进行排序 而是检测异常值并将其删除 另一个例子 13 12 4 9 8 6 7 3 2 我希望能够删除 4 和

随机推荐

  • CSS 3D 变换 - 无法单击链接

    我试图在我的网页上包含 CSS 3D 变换效果 但在卡片翻转后单击链接时遇到一些问题 Question 为什么会出现这种情况 如何解决这个问题 以便我在翻转卡片后可以点击链接 Example http jsfiddle net rbWFt
  • 如何查看 IAM 用户创建的资源的 AWS 账单成本?

    In brief 我们需要通过以下方式查看特定 IAM 用户创建的资源的 AWS 成本aws createdBy tag In full My 没有帮助 它给了我一个使用的想法组织整合账单 http docs aws amazon com
  • Excel - 如何从一张工作表中删除不包含另一张工作表中的列输入的所有行

    我的 Excel 书中的一张工作表中有一个电子邮件地址列表 位于 M 列 工作表 1 长度为 2050 行 其他列上还有其他数据 例如名字和姓氏等 以及另一张工作表 Sheet2 A 列中有电子邮件地址列表 长 210 行 我需要保留 Sh
  • 使用 Keycloak Script Mapper 聚合声明中角色的属性

    我们有一个 Keycloak 脚本映射器来将角色的属性添加到 ID 令牌 目标是聚合角色属性中可用的值 映射器看起来像这样 Merge with concatenation for the values of attributes obta
  • pandas groupby 在具有聚合的列上[重复]

    这个问题在这里已经有答案了 我有一个像这样的数据框 userId category count A cat 24 B dog 26 A cat 32 C bird 21 D lion 6 D cat 32 C bird 22 我想要的结果是
  • .def 文件 C/C++ DLL

    我不明白将 def 文件与 DLL 一起使用的意义 看起来它取代了在 DLL 代码中使用显式导出的需要 即显式 declspec dllexport 但是在不使用这些文件时我无法生成 lib 文件 这会在稍后使用 DLL 时产生链接器问题
  • 为什么python线程数一开始是2?

    import threading print threading activeCount 输出 2 当这段代码保存到文件并运行时 既然是主线程怎么可能是2呢 当我们运行 foo py 文件时 除了主线程之外 Python 是否默认运行另一个
  • 在 Scala 中,为什么模式匹配没有选取 NaN?

    我的方法如下 def myMethod myDouble Double Double myDouble match case Double NaN gt case gt IntelliJ 调试器显示 NaN 但这在我的模式匹配中没有被识别出
  • Mathematica 中的“upvalue”是什么意思以及何时使用它们?

    To me g f g x h x 只是详细地等价于f g x h x 你能举一个你必须使用的例子吗 实际上 g f g x h x 不等于f g x h x 后者将定义与f while and 和它的 将定义与g 这是一个至关重要的区别
  • 如何以及何时使用 Html 编码

    我最近了解到 我不应该将 html 编码数据存储在数据库中 但我应该对用户屏幕上显示的数据进行 html 编码 没什么大不了的 我必须修复我的数据库记录并进行一些代码更改 但我的问题是 什么时候应该使用 html 编码 什么时候不应该使用
  • Spring Batch 和 Spring Integration 的集成问题 - “没有为端点定义轮询器”异常

    我经历了Spring 集成指南 http docs spring io spring integration reference html sftp html和例子在这里 https github com spring projects s
  • PHP exec() 不适用于 ffmpeg

    我尝试在 PHP 中运行以下命令 在 Ubuntu 上
  • Entity Framework Core 2.2:禁用特定实体的迁移

    我正在尝试在已创建数据库的现有系统上构建一个 aspnetcore 应用程序 并且我将在其上添加一些表 我对数据库进行了逆向工程 将现有表作为实体添加到我的应用程序中 并且我编写了自己的实体 稍后将添加这些实体 最后 所有实体都添加到单个
  • JQuery Mobile:聚焦输入文本不尊重 z-index,出现在其他所有内容之上

    我有一个带有 jQ uery Mobile 的 Android Phonegap 应用程序 在 HTC Desire 上 如果输入框获得焦点 则无论上面有哪些元素 它始终会转到前面 您是否尝试应用CSS属性 webkit transform
  • iOS - UISlider 的自定义图像

    我想为 UISlider 轨道使用图像 我不希望拇指的左边有一种颜色 右边有另一种颜色 我只想要一张横跨整个赛道的静态图像 可能的 要将图像设置到滑块 您可以使用设置最小轨迹图像 设置最大轨迹图像方法 根据您的要求 将两者设置为同一图像 i
  • 适用于打字稿的编辑器和调试器

    我正在开发一个nodejs 项目 其中所有代码都是用打字稿编写的 它遵循微服务模式 每个微服务都是一个独立的项目 因此需要同时打开和调试许多项目 我尝试了 webstorm 和 Visual Studio 使用 NTVS 但对它们都不满意
  • PYQT5画线[重复]

    这个问题在这里已经有答案了 def init self super init self title Main menu self left 80 self top 80 self width 1500 self height 1000 se
  • Oracle XML:跳过不存在的节点

    我在将 xml 数据插入到 oracle 表中时遇到问题 这是我的 xml
  • 简单的 Kafka Consumer 未收到消息

    我是 Kafka 的新手 正在运行一个简单的 Kafka 消费者 生产者示例 如上所示Kafka消费者 https kafka apache org 0102 javadoc index html org apache kafka clie
  • 生成随机确定性有限自动机的算法是什么?

    DFA 必须具有以下四个属性 DFA 有 N 个节点 每个节点有 2 个传出转换 每个节点都可以从其他每个节点访问 从所有可能性中以完全一致的随机性选择 DFA 这是我到目前为止所拥有的 从 N 个节点的集合开始 选择一个尚未选择的节点 将