常用的DFA最小化演算法?

時間 2021-06-06 05:59:37

1樓:

我站Brzozowski's algorithm, 這是最簡單的.

整體演算法思路一句話就可以總結,

先反著做一遍NFA轉DFA, 然後再正著做一遍NFA轉DFA.

為什麼這樣可以生成最小DFA? 建議先看看這篇,

無名氏:一句話總結NFA轉DFA演算法

先反轉NFA, 再轉DFA相當於消去了重複字尾(suffix).

NFA轉DFA相當於消去了重複字首(prefix).

為什麼消除重複的字尾和字首就得到了最小化DFA?

看過"一句話總結NFA轉DFA演算法"就應該明白能不能摺疊狀態要看Duck Test, 即前乙個狀態和transition是否重複, 而Automata只有唯二兩個點可以做Duck Test的初始狀態, 開始態和結束態.

複雜度如何?

NFA轉DFA是超多項式時間的, 這很慢(相比於Hopcroft's algorithm)! 但無論如何你都要寫NFA, 然後再轉DFA的. 那做一遍和做兩遍有什麼本質差別呢?

演算法複雜度只看最高項.

我現在才有點理解怎麼用自動機做索引壓縮了... 本質上是實現了帶捕獲組的Minimal DFA, 有點意思啊~

2樓:cyzw cyzw

作者J Hopcroft

出版源《Theory of Machines & Computations》, 1971:189–196

AN n log n ALGORITHM FOR MINIMIZING STATES IN A FINITE AUTOMATON

自殺如何對別人的傷害最小化

yesorno 我復讀過,很理解你的想法,復讀期間從沒想到自殺,就是很壓抑很難受,我媽陪讀的,有時候吃著飯都眼圈泛起眼淚,感覺很對不起父母,對不起我的生命。還好復讀期間有乙個人經常鼓勵我,我都不知道怎麼復讀過來的,雖然最後大學不是我很理想的學校,但是我老爸特別希望的乙個師範大學。算是隨了他的願。不用...

怎麼樣死可以把痛苦最小化?

一道彩虹 首先肯定要說常見的,燒炭是比較好的方式,經濟痛苦小比較容易實現,一般在家裡或者車裡。弊端,可能產生痛苦,加上心裡壓力大最後不成功建議可以配合少劑量安眠藥,還有容易被發現並且搶救回來,畢竟打算死了,誰也不想再活過來。第二種,絞刑,可以根據身高選擇繩子套在脖子上,從樓上跳下去,巨大的下墜裡會瞬...

如何風險最小化的成功向領導把專案資源拿下來?

1 你小看了董事長對公司情況的了解 2 你高看了這個不是同道中人的二把手 3 這件事不該這麼早透實底,特別是你還不確定能成功之前4 事已至此就別帶二把手玩了,如果你的想法真能盈利,那就去找董事長,爭取以公司專案來開展,雖然回報會少很多,但也算交了個學費,為下次機會打基礎吧 5 如果董事長已經有這件事...