1.实验内容每一个正规集都可以由一个状态数最少的DFA所识别,这个DFA是唯一的(不考虑同构的情况)。
任意给定的一个DFA,根据以下算法设计一个C程序,将该DFA化简为与之等价的最简DFA。
2.实验设计分析2.1实验设计思路根据实验指导书和书本上的相关知识,实现算法。
2.2实验算法(1)构造具有两个组的状态集合的初始划分I:接受状态组F和非接受状态组Non-F。
(2)对I采用下面所述的过程来构造新的划分I-new.ForI中每个组GdoBegin当且仅当对任意输入符号a,状态s和读入a后转换到I的同一组中;
/*最坏情况下,一个状态就可能成为一个组*/用所有新形成的小组集代替I-new中的G;end(3)如果I-new=I,令I-final=I,再执行第(4)步,否则令I=I=new,重复步骤(2)。
(4)在划分I-final的每个状态组中选一个状态作为该组的代表。
这些代表构成了化简后的DFA M'状态。
令s是一个代表状态,而且假设:在DFAM中,输入为a时有从s到t转换。
令t所在组的代表是r,那么在M’中有一个从s到r的转换,标记为a。
令包含s0的状态组的代表是M’的开始状态,并令M’的接受状态是那些属于F的状态所在组的代表。
注意,I-final的每个组或者仅含F中的状态,或者不含F中的状态。
(5)如果M’含有死状态(即一个对所有输入符号都有刀自身的转换的非接受状态d),则从M’中去掉它;
删除从开始状态不可到达的状态;
取消从任何其他状态到死状态的转换。






2024/1/27 6:58:27 1KB DFA化简 C++ 编译原理
1
无线电通讯发明至今已经有一世纪的历史了,它在人类文明进步中,扮演着相当重要的角色。
藉由通讯技术的发达,一切知识的传播不再有障碍,使得科技进步一日千里。
在今天,无论是出门人手一支的行动电话或是越来越流行的无线网络及蓝芽接口(BlueTooth)都是无线通讯的应用范围。
其中,最早融入人们生活中的无线电技术,应该就属于收音机广播了。
收音机,这个古早以前被视为"有钱人的象征"的"高科技产品",到现在已经是超级平民化的东西了(甚至有公司行号大量制作印有自己品牌的迷你收音机作为具有广告效果的礼品)。
本装机报告所讲解的就是一台最简单的收音机。
当然,这个机器并非DZ的套件,其破烂的音质更与Hi-End音响没有任何关联,纯粹是好玩而已,如果您追求的是完美的音响系统,那么不妨可以略过这篇吧。
2023/12/13 13:26:58 6.55MB 矿石收音机
1
利用消息队列基本函数,实现Linux系统下进程A和进程B之间的消息收发。
msgsend输入‘end’,退出程序
2023/11/19 18:06:58 2KB c语言 网络程序设计
1
/*这是一个在字符环境中,用ASCII码打印二叉树形状的算法。
采用层次遍法。
算法拙劣,仅供初学者做练习,(本人也是初学者,自学数据结构,刚好学到这二叉树这一章,搞几个二叉的例题,却不知道其构造形状,想调用图形API做个美观点的,却有点偏离本章的学习目的,只好用字符打印,linux环境中打印的还可以,DOS屏幕如果不够宽您输出到文本,如果您有更好的算法一定不吝赐教。
我的QQ:137241638mail:hnflcp@139.com*/voidPBTNodePrint(PBTNode*pb[],intn,inth){ intl=-1, r=0, i,j,k, end; charc; PBTNode*p; if(ndata); printf("\n"); return; } h=h-pb[0]->level+2; for(k=0;kparent->space; for(;jlrflag==0)?'/':'\\'; printf("%c",c); } printf("\n"); } for(i=0;ilrflag==0) p->space=p->parent->space+l; else p->space=p->parent->space+r; } for(i=0,j=0;idata); } printf("\n");}//循环打印所有层的数据
1
END-TO-ENDSTREAMINGKEYWORDSPOTTING端到端关键词检测
2023/11/1 10:25:57 589KB 关键词检测
1
主要是通过R语言,对日期数据进行处理,并补全缺失数据rawdata<-read.csv("C:/Users/li/Desktop/ss.csv",fill=F)#提取数据ss1,并组合数据-------------------------------ts1<-rawdata$ts1ts11<-as.Date(ts1,'%Y/%m/%d')false<-is.na(ts11)ts21<-ts11[!false]ss1<-rawdata$SS1ss1<-ss1[!false]library(zoo)data1<-zoo(ss1,ts21)#补全不规则数据(时间的缺失和缺失值)date1<-zoo(,seq(start(data1),end(data1),'day'))datanew1<-merge(data1,date1)datanew1[is.na(datanew1)]<-median(datanew1,na.rm=T)#提取数据ss2
2023/10/13 15:53:47 923B R语言 日期数据 缺失补全
1
是pl0的语法分析器,编译原理实验;
用C写的。
/语法分析过程中/利用词法分析的结果进行分析/严格按照PL0程序定义来编写//::=./::=PROGRAM;/::=[][][]/::=CONST{,};/::==/::=VAR{,};/::=;;【原课件中没有最后的分号,经分析应该有分号】/::=PROCEDURE/::=|/::=BEGIN{;}END【符合语句应该注意的是,END前距离END最近的那条语句一定没有分号,其他语句必须有分号】/::=||||||/::=:=/::=READ({,})/::=WRITE({,})/::=CALL【原课件中有分号,实际不应该有】/::=IFTHEN/::=WHILEDO/::=||()/::={}/::=*|//::=[+|-]{}/::=+|-/::=|ODD/::=#|=|>|>=|<|<=
2023/9/9 7:24:35 597KB PL0 编译原理 语法分析
1
检查pascal程序代码begin和end,if和then和else匹配程序。
2023/9/5 19:52:46 4.22MB pascal 代码匹配 begin end
1
delphi微软手写输入法源码interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,OleServer,MSINKAUTLib_TLB,ExtCtrls,StdCtrls,MSINKAUTLib;typeTForm1=class(TForm)InkCLT:TInkCollector;Memo1:TMemo;Panel1:TPanel;Button1:TButton;InkRecognizerContext1:TInkRecognizerContext;procedureFormCreate(Sender:TObject);procedureInkCLTStroke(ASender:TObject;constCursor:IInkCursor;constStroke:IInkStrokeDisp;varCancel:WordBool);procedureButton1Click(Sender:TObject);private{Privatedeclarations}public{Publicdeclarations}end;varForm1:TForm1;implementation{$R*.dfm}procedureTForm1.FormCreate(Sender:TObject);beginInkCLT.hWnd:=panel1.Handle;InkCLT.Enabled:=true;InkCLT.DefaultDrawingAttributes.Color:=clRed;//墨水颜色InkCLT.DefaultDrawingAttributes.Width:=200;//笔的宽度end;procedureTForm1.InkCLTStroke(ASender:TObject;constCursor:IInkCursor;constStroke:IInkStrokeDisp;varCancel:WordBool);beginMemo1.Lines.Clear;Memo1.Lines.Add(Stroke.Ink.Strokes.ToString);end;procedureTForm1.Button1Click(Sender:TObject);beginInkCLT.Ink.DeleteStrokes(InkCLT.Ink.Strokes);Panel1.Refresh;end;end.
2023/8/17 20:53:57 9.38MB 手写输入法
1
React适配器amphp/react-adapter使任何库与兼容。
安装composerrequireamphp/react-adapter用法在ReactPHP库需要LoopInterface实例的LoopInterface,只需传递ReactAdapter::get()即可在Amp的事件循环上运行ReactPHP库。
<?phprequire'vendor/autoload.php';useAmp\Loop;useAmp\ReactAdapter\ReactAdapter;Loop::run(function(){$app=function($request,$response){$response->writeHead(200,array('Content-Type'=>'text/plain'));$response->end("HelloWorld\n");};$socket=ne
2023/8/14 8:55:46 6KB php async reactphp event-loop
1
共 64 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡