dfa 最小化的一个丐版实现

dfa 最小化的一个丐版实现

https://shanlunjiajian.github.io/2023/05/21/dfa-tech/

好像是叫 moore 算法,一个 vector 代表一个等价类,col 是所属等价类,这个是初始的时候 accept 状态放在一个等价类里,reject 状态放在一个等价类里,其余状态放在一个等价类里。对每种出边检查同一等价类的此类出边是否指向了不同等价类,根据指向的等价类的不同进行分裂。

	while(1){
		int lac=cct;
		for(int o=0;o<m;o++){
			for(int i=1;i<=lac;i++)if(vec[i].size()>1){
				int tmp=cct;
				for(auto j:vec[i]){
					int go=col[tr[j][o]];
					if(!vis[go])
						vis[go]=++cct;
					vec[vis[go]].pb(j);
				}
				for(auto j:vec[i])vis[col[tr[j][o]]]=0;
				vi().swap(vec[i]);
				swap(vec[i],vec[cct]);--cct;
				for(auto j:vec[i])col[j]=i;
				for(int t=tmp+1;t<=cct;t++)
					for(auto j:vec[t])
						col[j]=t;
			}
		}
		if(cct==lac)break;
	}
posted @   do_while_true  阅读(93)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
· 重磅发布!DeepSeek 微调秘籍揭秘,一键解锁升级版全家桶,AI 玩家必备神器!
历史上的今天:
2022-10-09 「题解」Codeforces 1572B Xor of 3

This blog has running: 1823 days 13 hours 27 minutes 20 seconds

点击右上角即可分享
微信分享提示