為解決問題而選擇數據結構的三步:
一.分析問題以確定任何算法均會遇到的資源限制.
二.確定必須支持的基本運算,并度量每種運算所受的資源限制.基本運算的實例包括向數據結構中插入一個數據項,從數據結構中刪除一個數據項和查找指定的數據項.
三.選擇最接近這些開銷的數據結構.
ADT 抽象數據類型
它是指基于邏輯類型的數據類型以及這個類型上的一組操作,每一個操作由它的輸入和輸出定義.一個ADT的定義并不涉及它的實現細節,這些實現細節對于ADT的用戶是隱藏的.
隱藏實現細節的過程稱為封裝.數據結構是ADT的物理實現,ADT的每一個操作均由一個或者多個子程序來實現.
問題:即對應一組輸入就有一組相應的輸出.問題的定義不能包含有關怎么樣解決問題的限制.只有在問題被準確定義并完全理解后才能研究問題的解決方法.問題的定義應該包含對任何可行方案所需資源的限制.
算法:算法是指解決問題的一種方法或者一個過程.一個問題可以用多種算法來解決.一個給定的算法解決一個特定的問題.
一個算法應該包含如下性質:
一.正確性.
二.具體步驟.
三.確定性.
四.有限性.
五.可終止性.
程序:一個計算機程序被認為是使用某種程序設計語言對一個算法的具體實現.
posted @
2011-06-27 14:19 coolnothing 閱讀(363) |
評論 (0) |
編輯 收藏
ICTCLAS是中科院計算所出品的中文分詞程序包,在國內一直有著良好的口碑和很高的使用率。
對于一個測試語句
原字符串:一塊勤奮地漂亮的一塊錢,/打造經濟的航空母艦。ABCD.#$% Hello World!\n又一段文本123輛 !3.0
其中包含了中文,英文,標點符號,亂七八糟符號及阿拉伯數字。
結果:一塊/s 勤奮/a 地/u 漂亮/a 的/u 一/m 塊/q 錢/n ,/w //nx 打造/v 經濟/n 的/u 航空母艦/n 。/w ABCD.#$%/nx Hello/nx World/nx !/w 又/d 一/m 段/q 文本/n 123/m 輛/q
可以發現在ABCD.#$%/nx的分詞結果有點不對,并沒有很好的把英文單詞和其他字符很好的分開.
在此處我加入了一個驗證機制,修改過后的分詞結果為:
一塊/s 勤奮/a 地/u 漂亮/a 的/u 一/m 塊/q 錢/n ,/w //nx 打造/v 經濟/n 的/u 航空母艦/n 。/w ABCD/nx .#$%/un Hello/nx World/nx !/w 又/d 一/m 段/q 文本/n 123/m 輛/q
其中的/un表示未知字符的意思.
posted @
2011-06-23 12:59 coolnothing 閱讀(263) |
評論 (1) |
編輯 收藏