[英]Algorithm for pattern matching
背景
我正在設計一個應用程序,它將文本從一種語言轉換為另一種語言。 例如,輸入文本hello
將轉換為指定的語言文本。 通過為每種語言提供查找表來完成此操作。 轉換算法具有以下步驟。
hello
將是模式。 如果找到任何匹配項,請停止處理並返回匹配項。 h
,2nd- he
,3rd- hel
等。 匹配的令牌將保留在臨時緩沖區中,並在沒有更多匹配項時返回。 這就像最大的munch規則 。 該算法將必須遍歷輸入文本多次,並導致二次復雜度。 我正在嘗試通過將查詢表安排在樹形結構(非常類似於后綴樹)中來對此進行優化。 如果存在用於h
, hel
, lo
查找文本,則其組織方式如下
root
--h
----hel
--lo
這將幫助我避免不必要的查找。 匹配h
,僅當h
節點有孩子h
,才需要轉到下一個字符。 這樣可以大大減少迭代次數。
問題
有什么想法嗎...?
您正在談論的是三元搜索樹。 它類似於一個特里,但據我所知,其空間利用率更高。
查看“ Trie”數據結構。
為什么不使用Lucene快速索引文本,甚至更多-索引包含用於
等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.