關於模式匹配的貪婪算法設想 (1/N)

關於模式匹配的問題,在過往斷斷續續的實踐中遇到過多次,既包括一些基礎的問題,也包含關於平臺和算法思想的問題。基礎問題無非是一些通用符的使用:如何使應用模式最佳匹配目標數據。至於平臺相關問題,則指的是實際實踐中,模式匹配具有編程語言相關性和操作系統相關性。相同的模式表達式,在不同編程語言中很可能是不通用的,具有不同的意思,可能是有效的,也可能是行不通的。操作系統相關比較少見。這個可能出現的地方是同一版本不同平臺的IDE可能不支持。因爲不同操作系統可能提供不同基礎庫或沒有提供相關庫。

一般認爲,模式匹配的關鍵在於:通用符和標識符使用是否恰當,模式組合是否有效,是否效率最佳,是否包含最廣,是否表達最優等等。

其實,這只是基礎問題。因爲這些都是具體的東西。顯而易見卻抽象的事物纔是問題的關鍵。具象的事物可以不加思考憑藉熟練度可以掌握。抽象的事物是提煉濃縮的結晶。抽象是對某類事物關鍵共性的概括,是對物的本源/本質的描述。

那麼模式匹配更關鍵的問題是什麼?

模式匹配的關鍵是算法。在很多人眼中:算法=表達式。從某方面來說其實沒有錯。或許我們應該思考:表達式是模式匹配裏萬能的神--一條通用表達式可能對某類問題完全描述?在許多實踐得來的經驗證明:這幾乎是不可能的。“最優”的表達式往往只能滿足某類問題大多數的情況設想,卻不能涵蓋所有點。這似乎是永遠也沒有辦法的問題。

我們知道,某個問題可能對應多個表達式:模糊的和(更)具體的,低效的和高效的,精準的和不精準的。一般情況下,具體的表達式似乎更讓人樂於接受。因爲它是詳細的,更易於理解,匹配更精準,計算效率更好。很多時候,我們更容易忘記尋找問題的根源--事物的本質。因爲它是抽象的,是晦澀難懂的,是費事的。只有真正理解事物的本質,問題的癥結,才能更好的解決問題。人與動物的本質區別是:人能思考,製造工具,使用策略。假設,我們可以設計某個問題的多個猜想,寫出多個不一樣功能類似的表達式,一些是單方面的,一些是包含多方面的;這些表達式沒有一個可以囊括該問題的所有方面。既然單個表達式不能解決問題,爲什麼不使用多個表達式的組合?這真是一個好問題。

一般思維:先設置一個方面數量級最優的表達式,然後對特殊情況另作處理。這種情況有什麼問題?!說到這裏,似乎總感覺哪裏不對。在日常生活,我們對待類似的事物早習以爲常,習慣性的思維讓我們惰于思考,往往忽略某些細微而關鍵的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章