【Petri网导论学习笔记】Petri网导论入门学习(十一) —— 3.3 变迁发生序列与Petri网语言

目录

      • 3.3 变迁发生序列与Petri网语言
        • 定义 3.4
        • 定义 3.5
        • 定义 3.6
        • 定理 3.5
        • 例 3.9
        • 定义 3.7
        • 例 3.10
        • 定理 3.6
        • 定理 3.7 有界Petri网泵引理
        • 推论 3.5
        • 定义 3.9
        • 定理 3.8
        • 定义 3.10
        • 定义 3.11
        • 定义 3.12
        • 定理 3.9

3.3 变迁发生序列与Petri网语言

对于 Petri 网进行分析的另一种方法是考察网系统中所有可能发生的变迁序列以及这些序列所构成的集合的性质。如所周知,一个字母表满足某些特定条件的字符串集合,称为该字母表上的一个语言。如果我们把一个 Petri 网的变迁集 T T T 看作一个字母表(即把每个变迁看作一个字符),或者给出变迁集到某个字母表 Γ \Gamma Γ 上的一个映射的定义,那么该 Petri 网的所有可能发生的变迁序列(或这些序列映射到 Γ ∗ \Gamma^* Γ 的字符串)的集合就是 T T T(或 Γ \Gamma Γ)上的一个语言

变迁为字母表

在 Petri 网语言理论中,根据终止状态的不同取法,把 Petri 网语言(Petri net language) 分成 4 型。在每一型中,又根据变迁集 T T T 到字母表 Γ \Gamma Γ 的映射 φ \varphi φ 的不同规定,分成 3 类。一共给出了 4 型 12 类 Petri 网语言。

根据终止状态划分4型,映射划分3类,共4型12类

定义 3.4

Σ = ( S , T ; F , M 0 ) \Sigma = (S, T; F, M_0) Σ=(S,T;F,M0) 为一个 Petri 网, φ : T → Γ \varphi: T \rightarrow \Gamma φ:TΓ 为标注函数, Q t ⊆ R ( M 0 ) Q_t \subseteq R(M_0) QtR(M0)。令

L = { φ ( σ ) ∈ Γ ∗ ∣ σ ∈ T ∗ : M 0 [ σ ⟩ M , M ∈ Q t } L = \{\varphi(\sigma) \in \Gamma^* \mid \sigma \in T^*: M_0 [\sigma \rangle M, M \in Q_t\} L={φ(σ)ΓσT:M0[σM,MQt} (3.19)

L ′ = { φ ( σ ) ∈ Γ ∗ ∣ ( σ ∈ T ∗ : M 0 [ σ ⟩ M ) ∧ ( ∃ M ′ ∈ Q t : M ≥ M ′ ) } L' = \{\varphi(\sigma) \in \Gamma^* \mid (\sigma \in T^*: M_0 [\sigma \rangle M) \land (\exists M' \in Q_t: M \geq M')\} L={φ(σ)Γ(σT:M0[σM)(MQt:MM)} (3.20)

  1. Q t Q_t Qt 是预先给定的 R ( M 0 ) R(M_0) R(M0) 的一个子集,则称 L L L Σ \Sigma Σ 产生的 L L L-型语言 L ′ L' L 称为 Σ \Sigma Σ 产生的 G G G-型语言
  2. Q t = { M ∈ R ( M 0 ) ∣ ∀ t ∈ T : M [ t ⟩ } Q_t = \{M \in R(M_0) \mid \forall t \in T: M[t\rangle\} Qt={MR(M0)tT:M[t⟩},则称 L L L Σ \Sigma Σ 产生的 T T T-型语言
  3. Q t = R ( M 0 ) Q_t = R(M_0) Qt=R(M0),则称 L L L Σ \Sigma Σ 产生的 P P P-型语言
  1. L L L-型语言

    • 定义:终止状态 Q t Q_t Qt 是初始标记状态可达集 R ( M 0 ) R(M_0) R(M0) 的一个子集
    • 特点:只包含那些能精确到达 Q t Q_t Qt 中某个标记的变迁序列
  2. G G G-型语言

    • 定义:允许到达的标记 M M M 可以大于 Q t Q_t Qt 中的某个标记。
    • 特点:包含那些能到达或超过 Q t Q_t Qt 中某个标记的变迁序列。(能到就可以不要求精确到,能大于他的那个状态也行,能覆盖)
  3. P P P-型语言

    • 定义:终止状态 Q t Q_t Qt所有可达标记,即 R ( M 0 ) R(M_0) R(M0)
    • 特点:包含所有从初始标记 M 0 M_0 M0 出发可达的变迁序列。
  4. T T T-型语言

    • 定义:终止状态 Q t Q_t Qt 包含所有可以从 M 0 M_0 M0 出发的死标签。
    • 特点:包含那些死标签。

    区别总结

  • 终止条件 L L L 型要求精确到达 G G G允许覆盖 P P P包括所有可达状态 T T T 型是死标签集合。
  • 应用场景:不同类型语言适用于不同的系统建模需求。例如, L L L 型适合需要精确控制的系统,而 T T T 型适合需要持续运行的系统。
定义 3.5

Σ = ( S , T ; F , M 0 ) \Sigma = (S, T; F, M_0) Σ=(S,T;F,M0) 为一个 Petri 网, L L L Σ \Sigma Σ 产生的 L L L-型 ( G G G-型, T T T-型, P P P-型) 语言。对于标注函数 φ : T → Γ \varphi: T \rightarrow \Gamma φ:TΓ:

  1. Γ = T \Gamma = T Γ=T,且 ∀ t ∈ T : φ ( t ) = t \forall t \in T: \varphi(t) = t tT:φ(t)=t,则称 L L L Σ \Sigma Σ 产生的 L L L-型 ( G G G-型, T T T-型, P P P-型) 无标注语言,记为 L f ( G f , T f , P f ) L^{f}(G^f, T^f, P^f) Lf(Gf,Tf,Pf)

  2. ∀ t ∈ T , φ ( t ) ≠ λ ( λ  表示空串 ) \forall t \in T, \varphi(t) \neq \lambda (\lambda \text{ 表示空串}) tT,φ(t)=λ(λ 表示空串),则称 L L L Σ \Sigma Σ 产生的 L L L-型 ( G G G-型, T T T-型, P P P-型) 无空标注语言,记为 L ( G , T , P ) L(G, T, P) L(G,T,P);否则称 L L L Σ \Sigma Σ 产生的 L L L-型 ( G G G-型, T T T-型, P P P-型) 含空标注语言,记为 L λ ( G λ , T λ , P λ ) L^{\lambda}(G^{\lambda}, T^{\lambda}, P^{\lambda}) Lλ(Gλ,Tλ,Pλ)

如果映射后两者相等,则称无标注语言

不相等,如果不存在空串称为无空标注语言

有空串称为含空标注语言

定义 3.4 和定义 3.5 把 Petri 网语言分成 4 型 12 类,如表 3.1 所示。

image-20241123092708088

各种型(类)语言的背景是明显的。对于一个 Petri 网 Σ = ( S , T ; F , M 0 ) \Sigma = (S, T; F, M_0) Σ=(S,T;F,M0) L L L-型语言和 G G G-型语言分别为 Σ \Sigma Σ到达覆盖某些预先给定的标识的变迁发生序列(或它们到某字母表上的映象)的集合 T T T-型语言是指那些导致死标识的变迁序列(或它们到 Γ \Gamma Γ 的映象)的集合, P P P-型语言是 Σ \Sigma Σ一切可能发生的变迁序列(或它们到 Γ \Gamma Γ 的映象)的集合。可见,Petri 网语言的分“型”同形式语言中 Chomsky 文法体系的“型”没有任何联系。标注函数 φ \varphi φ 则是对各个变迁在被描述的实际系统中所对应的动作的一个注解。例如,当两个变迁在被描述的系统中对应同一个(种)动作时,可以对它们赋予相同的标注。当一个变迁在被描述系统中不代表任何实际动作(即是一种虚动作,虚工序)时,则可以对它赋予空标注 λ \lambda λ-标注)。

与乔姆斯基分类的型没有关系

标注函数只是变迁在实际系统对应动作的一个注解

空标注代表一个变迁在被描述的系统中不代表任何实际动作,虚动作,虚工序

在所定义的 12 类 Petri 网语言中, L λ L^\mathrm{\lambda} Lλ范围最广的一类。其他各类型的 Petri 网语言都可以转化为 L λ L^\mathrm{\lambda} Lλ的一个子类。[4] 对 L L L- 型语言作了详细的讨论,并指出每一个 L L L一型 Petri 网语言都可以由一个标准 Petri 网产生。

定义 3.6

Σ = ( S , T ; F , M 0 ) \Sigma=(S,T;F,M_{0}) Σ=(S,T;F,M0)为一个 Petri 网。如果
1)存在 s b , s f ∈ S s_b,s_f\in S sb,sfS,使得 ∙ s b = ∅ ^\bullet s_b=\emptyset

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink--API 之Transformation-转换算子的使用解析

目录 一、常用转换算子详解 (一)map 算子 (二)flatMap 算子 (三)filter 算子 (四)keyBy 算子 元组类型 POJO (五)reduce 算子 二、合并与连接操作 …

解锁Scala编程:深入文本分析与数据处理的艺术

引言: 在数据科学的世界里,Scala以其强大的并发能力和简洁的语法,成为处理大规模数据集的理想选择。本文将带您踏上一段Scala编程的探索之旅,从基础的文本分析到复杂的数据处理,每一步都精心设计,让您在实…

Top 10 Tools to Level Up Your Prompt Engineering Skills

此文章文字是转载翻译,图片是自已用AI 重新生成的。文字内容来自 https://www.aifire.co/p/top-10-ai-prompt-engineering-tools 供记录学习使用。 Introduction to AI Prompt Engineering AI Prompt Engineering 简介 1,Prompt Engineering 提示工程…

【RK3588 Linux 5.x 内核编程】-内核线程与读写自旋锁

内核线程与读写自旋锁 文章目录 内核线程与读写自旋锁1、读写自旋锁介绍2、Linux内核中的读写自旋锁2.1 初始化2.1.1 静态方法2.1.2 动态方法3、读写自旋锁加锁与解锁3.1 在用户上下文之间锁定3.1.1 读锁3.1.2 写锁3.2 下半部分之间的锁定3.3 在用户上下文和下半部分之间锁定3.…

Rust语言俄罗斯方块(漂亮的界面案例+详细的代码解说+完美运行)

tetris-demo A Tetris example written in Rust using Piston in under 500 lines of code 项目地址: https://gitcode.com/gh_mirrors/te/tetris-demo 项目介绍 "Tetris Example in Rust, v2" 是一个用Rust语言编写的俄罗斯方块游戏示例。这个项目不仅是一个简单…

Spring Boot 与 Spring Cloud Alibaba 版本兼容对照

版本选择要点 Spring Boot 3.x 与 Spring Cloud Alibaba 2022.0.x Spring Boot 3.x 基于 Jakarta EE,javax.* 更换为 jakarta.*。 需要使用 Spring Cloud 2022.0.x 和 Spring Cloud Alibaba 2022.0.x。 Alibaba 2022.0.x 对 Spring Boot 3.x 的支持在其发行说明中…

Oracle, PostgreSQL 字符串排序不一致及调整

有一个使用了不同数据库的应,Oracle 和 PostgreSQL,数据库中的记录完全相同,相同的查询语句(相同的排序,至少从字面上来说是的)取到的记录排序却不同,从而产生了 Bug。 简单演示一下默认排序各自在这两种数据库中的行为…

(免费送源码)计算机毕业设计原创定制:Java+ssm+JSP+Ajax SSM棕榈校园论坛的开发

摘要 随着计算机科学技术的高速发展,计算机成了人们日常生活的必需品,从而也带动了一系列与此相关产业,是人们的生活发生了翻天覆地的变化,而网络化的出现也在改变着人们传统的生活方式,包括工作,学习,社交…

Ubuntu Opencv 源码包安装

说明: ubuntu20.04 建议 使用 opencv-4.6.0版本 ubuntu18.04 建议 使用 opencv-4.5.2-版本 安装包准备 1、下载源码包 OpenCV官网 下载相关版本源码 Sources # 克隆方式 OpenCV 源码git clone https://github.com/opencv/opencv.gitcd opencvgit checkout 4.5.2 …

Linux 下自动化之路:达梦数据库定期备份并推送至 GitLab 全攻略

目录 环境准备 生成SSH 密钥对 数据库备份并推送到gitlab脚本 设置定时任务 环境准备 服务器要有安装达梦数据库(达梦安装这里就不示例了),git 安装Git 1、首先,确保包列表是最新的,运行以下命令: …

极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【一】

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…

<项目代码>YOLOv8 停车场空位识别<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…

【智能制造-46】人机工程(工厂自动化)

工作空间设计 设备布局规划 根据人体测量学数据,合理安排自动化设备、生产线和工作区域的布局。例如,考虑工人的操作空间和活动范围,确保他们能够舒适地接近和操作设备。在汽车装配车间,机器人和工人的工作区域应划分明确&#…

Spring Boot 集成 Knife4j 的 Swagger 文档

在开发微服务应用时,API 文档的生成和维护是非常重要的一环。Swagger 是一个非常流行的 API 文档工具,可以帮助我们自动生成 RESTful API 的文档,并提供了一个友好的界面供开发者测试 API。本文将介绍如何在 Spring Boot 项目中集成 Knife4j …

一线大厂面试集锦

String 为什么要设计成不可变的 String被设计成不可变的有以下几个原因: 线程安全:由于String是不可变的,多个线程可以同时访问同一个String对象而无需担心数据被修改。这使得String在多线程环境下是线程安全1. 的。 2.缓存Hash值:由于String是不可变的,它的hashcode可以…

JavaScript:遍历一个对象数组,获取每个对象中 mainKeyId 对应的值,并以这个值作为新属性的键名,给该对象添加一个新属性。

假设我们有一个对象数组,每个对象包含一个 mainKeyId 字段,以 mainKeyId 的值作为新的键名,并给它添加一个新的属性。可以通过以下代码实现: 示例代码: const arr [{ mainKeyId: key1, name: Item 1, value: 10 },{…

php CURL请求502

增加 pm.max_children 的值 当前值为 50,如果并发请求较多,可能会耗尽子进程资源,导致 502。增加到 100 或更高(根据服务器内存和负载能力调整)。 2. 调整 request_terminate_timeout 当前为 100 秒,适合…

微信小程序中会议列表页面的前后端实现

题外话:想通过集成腾讯IM来解决即时聊天的问题,如果含语音视频,腾讯组件一年5万起步,贵了!后面我们改为自己实现这个功能,这里只是个总结而已。 图文会诊需求 首先是个图文列表界面 同个界面可以查看具体…

git(Linux)

1.git 三板斧 基本准备工作: 把远端仓库拉拉取到本地了 .git --> 本地仓库 git在提交的时候,只会提交变化的部分 就可以在当前目录下新增代码了 test.c 并没有被仓库管理起来 怎么添加? 1.1 git add test.c 也不算完全添加到仓库里面&…

【动手学电机驱动】STM32-FOC(8)MCSDK Profiler 电机参数辨识

STM32-FOC(1)STM32 电机控制的软件开发环境 STM32-FOC(2)STM32 导入和创建项目 STM32-FOC(3)STM32 三路互补 PWM 输出 STM32-FOC(4)IHM03 电机控制套件介绍 STM32-FOC(5&…