posts - 134,comments - 22,trackbacks - 0
          一、棧:

          1、后綴表達式的求值;
          2、中綴到后綴表達式的轉換;
          3、深度優(yōu)先搜索的非遞歸實現(xiàn);
          4、動態(tài)規(guī)劃的優(yōu)化:用于維護一個凸序列,便于二分查找,如LIS問題的O(nlgn)算法。

          二、隊列:
          1、樹的層序遍歷;
          2、廣度優(yōu)先搜索;
          3、Bellman-Ford算法的SPFA實現(xiàn);
          4、網絡流中FF算法的Edmonds-Karp實現(xiàn),以及Preflow算法的隊列優(yōu)化實現(xiàn)。


          三、二叉搜索樹:

          1、對大量的關鍵字的索引查找;
          2、有很多平衡策略以改善其平均性能:
          常用平衡樹:AVL,紅黑樹,隨機化BST,Splay Tree,Treap(或叫笛卡兒樹)。

          四、散列表(hash表):
          1、一般針對值域較大但狀態(tài)很稀疏的應用,比如狀態(tài)壓縮記憶化搜索;
          2、實現(xiàn)映射功能。

          五、檢索樹(Trie):
          1、一般用于字符串索引算法,速度快,但占用空間較大(相對hash);
          2、常用的改進結構:Patricia線索樹,多叉檢索樹(TST)。

          六、優(yōu)先隊列:

          1、常用的是二叉堆的實現(xiàn),具體應用如堆排序和Dijkstra算法;
          2、當需要快速合并兩個優(yōu)先隊列時,常用二項式隊列,實現(xiàn)簡單。
          3、注意最大最小堆的配對使用。

          七、線段樹和樹狀數(shù)組:

          1、兩者都可以用于離散對象的統(tǒng)計;
          2、后者的步進函數(shù)的性質和應用值得注意;
          3、前者基本上適用于任何的區(qū)間操作,如求區(qū)間最值,改變區(qū)間的值等。
          4、線段樹還可以用于優(yōu)化狀態(tài)的枚舉,經常和動態(tài)規(guī)劃結合。

          八、后綴樹與后綴數(shù)組:

          1、總體規(guī)律是兩者的實現(xiàn)都比較復雜,前者更甚,但是前者的功能也更強大;
          2、幾乎可以解決所有常見的關于字符串的算法,如最長回文子串,最長重復子串,以及很多的模式匹配問題。

          九、并查集:

          1、解決無向圖的連通性問題,如用于Kruskal算法;
          2、解決等價關系的查詢(這是它的主要用武之地),如05年Baidu之星初賽的石頭剪子布游戲;
          3、優(yōu)點是實現(xiàn)異常簡單,缺點是合并后無法分離,若需要可以選擇用動態(tài)樹。

          十、鄰接表和邊表:

          1、表示圖的最直接的方法;
          2、后者更省空間,并且在一定程度上更好用,比如Bellman-Ford算法。
          ps:數(shù)組、鏈表太基礎不在考慮之列。
          posted on 2010-05-14 11:26 何克勤 閱讀(148) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           
          主站蜘蛛池模板: 钟祥市| 台前县| 汉源县| 东平县| 孟州市| 若羌县| 大姚县| 友谊县| 平邑县| 城口县| 邯郸市| 卢氏县| 泊头市| 额济纳旗| 枣阳市| 北海市| 沂南县| 吴川市| 榆中县| 长宁县| 溆浦县| 新蔡县| 长沙县| 哈尔滨市| 三河市| 涿州市| 南澳县| 阳城县| 永靖县| 济阳县| 镇宁| 淄博市| 金塔县| 四平市| 丹寨县| 霍城县| 龙泉市| 遂平县| 美姑县| 和田县| 湾仔区|