DFA的最小化算法

2019-05-18  本文已影响0人  blackOak

Hopcroft算法


首先划分终态集和非终态集,之后不断进行划分,直到不再发生变化。
每轮划分对所有子集进行。对一个子集的划分中,若每个输入符号都能把状态转换到等价的状态,则两个状态等价。



划分完成后,从每个子集选出一个代表,若DFA中存在两个子集内状态之间的转换,则MFA中两个子集的代表之间也存在对应的转换。简便方法:对每个子集删去除代表以外的状态,并把指向它们的箭弧改为指向代表。
MFA的初态是含有DFA初态的子集的代表。MFA的终态集是DFA终态集划分出来子集的代表。
最后,从MFA中删除从初态无法到达的状态和死状态(只有入射弧或指向自身的出射弧的非终止状态)。

Myhill-Nerode算法


去除不可达状态。建表,行列为不同状态,未标记的格子行列状态等价。首先标记行列一个非终止状态一个终止状态的格子。对未标记的格子(q,q'),若存在一个输入符号a,使q经a到达状态和q'经a到达状态不等价,则标记(q,q')。重复直到表格不再变化。



对于所有未标记的(q,q'),把与q'有关的转换都改到q上,删除q'。

上一篇下一篇

猜你喜欢

热点阅读