news 2026/5/4 3:16:32

UVa 804 Petri Net Simulation

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVa 804 Petri Net Simulation

题目分析

Petri\texttt{Petri}Petri网是一种用于描述并发系统的计算模型,由库所(Places\texttt{Places}Places)、变迁(Transitions\texttt{Transitions}Transitions)和有向边组成。每个库所可以包含零个或多个令牌(Tokens\texttt{Tokens}Tokens)。

本题要求模拟Petri\texttt{Petri}Petri网的运行过程:

  • 变迁在所有输入库所都有足够令牌时可以被触发
  • 触发时从每个输入库所移除一个令牌,向每个输出库所添加一个令牌
  • 当多个变迁都可触发时,可以选择任意一个触发
  • 模拟最多NFNFNF次触发,或在无可用变迁时提前结束

解题思路

关键观察

  1. 触发条件判断:当变迁的某个输入库所在输入列表中出现多次时,需要该库所的令牌数 ≥ 出现次数
  2. 选择策略:按变迁编号从小到大检查,选择第一个可触发的
  3. 模拟过程:循环执行触发操作,直到达到NFNFNF次或无可用变迁

算法步骤

  1. 数据结构:使用数组存储库所令牌数,结构体数组存储变迁的输入输出信息
  2. 触发检查:对于每个变迁,统计各输入库所所需的最小令牌数
  3. 模拟循环:每次选择可触发的变迁,更新令牌分布
  4. 输出结果:根据模拟情况输出存活/死亡状态及剩余令牌分布

参考代码

// Petri Net Simulation// UVa ID: 804// Verdict: Accepted// Submission Date: 2025-11-01// UVa Run Time: 0.240s//// 版权所有(C)2025,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;structTransition{vector<int>input,output;};intmain(){cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);intNP,T=1;while(cin>>NP&&NP){vector<int>places(NP+1);for(inti=1;i<=NP;i++)cin>>places[i];intNT;cin>>NT;vector<Transition>ts(NT+1);for(intt=1;t<=NT;t++){intx;while(cin>>x&&x){if(x<0)ts[t].input.push_back(-x);elsets[t].output.push_back(x);}}intNF;cin>>NF;intfired=0,live=1;for(;fired<NF;fired++){intenabled=-1;for(intt=1;t<=NT;t++){vector<int>cnt(NP+1,0);for(intp:ts[t].input)cnt[p]++;boolcanFired=true;for(inti=1;i<=NP&&canFired;i++)if(places[i]<cnt[i])canFired=false;if(canFired){enabled=t;break;}}if(enabled==-1){live=0;break;}for(intp:ts[enabled].input)places[p]--;for(intp:ts[enabled].output)places[p]++;}cout<<"Case "<<T<<": ";if(live)cout<<"still live after "<<NF<<" transitions\n";elsecout<<"dead after "<<fired<<" transitions\n";cout<<"Places with tokens:";for(inti=1;i<=NP;i++)if(places[i]>0)cout<<" "<<i<<" ("<<places[i]<<")";cout<<"\n\n";T++;}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 3:13:25

MineDojo社区贡献指南:如何扩展任务和数据集

MineDojo社区贡献指南&#xff1a;如何扩展任务和数据集 【免费下载链接】MineDojo Building Open-Ended Embodied Agents with Internet-Scale Knowledge 项目地址: https://gitcode.com/gh_mirrors/mi/MineDojo MineDojo是一个基于互联网规模知识构建开放式具身智能体…

作者头像 李华
网站建设 2026/5/4 3:09:45

AI驱动海报设计:布局推理与可控编辑技术解析

1. 项目概述海报设计领域正在经历一场由AI技术驱动的变革。传统设计流程中&#xff0c;设计师需要花费大量时间在版式布局、元素搭配和视觉平衡上。而AI驱动的海报设计技术&#xff0c;通过深度学习模型理解设计规则和美学原理&#xff0c;能够自动生成符合专业标准的布局方案&…

作者头像 李华
网站建设 2026/5/4 3:07:20

AI智能体编排框架Abbey:从提示工程到复杂工作流自动化

1. 项目概述&#xff1a;当AI成为你的“修道院院长”最近在AI开源社区里&#xff0c;一个名为“abbey”的项目引起了我的注意。它的名字很有意思&#xff0c;直译过来是“修道院”&#xff0c;而它的全称是“goodreasonai/abbey”。初看这个标题&#xff0c;你可能会有点摸不着…

作者头像 李华
网站建设 2026/5/4 3:05:39

开源AI部署新选择:PyTorch 2.8镜像如何实现大模型4bit量化推理实战

开源AI部署新选择&#xff1a;PyTorch 2.8镜像如何实现大模型4bit量化推理实战 1. 为什么选择PyTorch 2.8镜像 在AI模型部署领域&#xff0c;环境配置一直是开发者面临的首要挑战。PyTorch 2.8深度学习镜像针对RTX 4090D 24GB显卡和CUDA 12.4进行了深度优化&#xff0c;解决了…

作者头像 李华
网站建设 2026/5/4 3:05:36

Qwen3-4B-Thinking快速上手:Postman测试API+推理链JSON Schema验证

Qwen3-4B-Thinking快速上手&#xff1a;Postman测试API推理链JSON Schema验证 1. 模型概述 Qwen3-4B-Thinking-2507-Gemini-2.5-Flash-Distill是基于通义千问Qwen3-4B官方模型开发的专用版本&#xff0c;特别强化了推理链(Thinking)能力。这个4B参数的稠密(Dense)模型原生支持…

作者头像 李华
网站建设 2026/5/4 3:05:30

如何免费实现Windows 11多用户远程桌面连接?RDP Wrapper终极指南

如何免费实现Windows 11多用户远程桌面连接&#xff1f;RDP Wrapper终极指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 你是否曾为Windows家庭版无法同时支持多用户远程桌面连接而烦恼&#xff1f;RDP Wrappe…

作者头像 李华