蔡良偉等人在提出了基於遺傳演算法的表示式分組 reg_naga 演算法, 該演算法優化了原有的 becchi 分組演算法,獲得了較好的分組效果
一、becchi 分組演算法
becchi 演算法由 becchi 等人提出的,其演算法的分組策略為不斷迴圈二分待分組的特徵模式集合,直到完成正規表示式分組。becchi 演算法的分組過程如下:
(1) 將未分組正規表示式集合的第一條正規表示式加入到當前組。
(2) 按順序將當前未分組表示式集合中每一條正規表示式加入到當前分組中,
並計算是否滿足公式:
#dfa(current_group)< σ
其中σ
σ= η
而η為閾值係數。如果滿足公式,則加入到當前分組中。
(3) 如果未分組的正規表示式集合為空,則輸出分組情況並結束演算法。
二、reg-naga 演算法
由 becchi 演算法的演算法過程可知,becchi 演算法的分組結果與正規表示式的輸入 順序有關,特徵模式集中不同的正規表示式排序方式會對演算法的輸出結果產生嚴 重影響。reg-naga 演算法通過使用遺傳演算法多次調整正規表示式的排列順序,來 優化 becchi 演算法的分組結果。
reg-naga 演算法將正規表示式的排列順序當成染色體,在染色體中採取如圖 所示的三種操作,包括交叉,互換變異與逆序變異來改變正規表示式的排列順 序,同時在每一次進行 becchi 演算法分組後,留下分組結果較好的正規表示式排列, 淘汰不好的正規表示式排列順序。在經歷多次選擇並且正規表示式排列順序穩定 之後,使用 becchi 演算法進行分組並輸出最後的分組結果。reg-naga 演算法通過使 用遺傳演算法對 becchi 演算法的輸入進行優化,最後得到足夠優秀且收斂的區域性最優 解。
正規表示式 分組
正規表示式對於單個字元的重複,非常方便。比如 d 表示1個或多個數字,表示重複0次或多次 重複1次或多次 重複0次或1次 重複n次 重複n次或多次 重複n次到m次 指定的字元後加特定的限定符,即可實現單字元的重複,那麼,對於一組字串的重複,正規表示式該如何操作?用小括號來指定子表示式 或稱分組 對指...
分組 正規表示式
在正規表示式中,可以用小括號將一些規則括起來當作分組,分組可以作為乙個元字元來看待。d d這是乙個簡單的且不完善的匹配 ip 位址的正規表示式,因為它除了能匹配正確的 ip 位址外,還能匹配如 322.197.578.888 這種不存在的 ip 位址。當然,用這個表示式簡單匹配成功後可以在利用 ph...
正規表示式 分組
group 分組 分了幾組就看分了幾個小括號 分了幾對小括號 當有巢狀的小括號時,怎麼區分那個是第一組那個是第二組呢?只需要數小括號邊的左小括號,看到第乙個左小括號就是第一組,第二個左小括號就是第二組 group 分組 public class test8 3到5位的數字 a z 2位的字母 a z...