----------------siwuxie095
樹形問題
在處理計算機中遇到的很多問題時,雖然沒有建立出具體的樹,但是
整個是以一棵樹的形狀進行求解的,通常稱這類問題為
樹形問題
遞迴法- 天然的樹形性質
由於樹這種結構,它的定義具有天然的遞迴性質,因此,當求解計算
機問題時,如果使用的是遞迴的方法,那麼這些問題也就天然的具有
樹形問題的性質
最典型的,比如:歸併排序
和快速排序
整個過程可以看做是對一棵排序樹的遍歷,用這種觀點再去看歸併排序
和快速排序的**,就會發現,它們像極了是對一棵樹進行後續遍歷
或前序遍歷
這樣的**模式
使用遞迴的方式來求解問題,在計算機領域一類最常見的求解問題,
就是搜尋問題
事實上,絕大多數計算機問題都可以使用搜尋的方式來解決
(1)一條龍遊戲
在與電腦博弈的過程中,每一次在 9 個格仔裡走哪個點,就可以列舉,
每一次列舉產生出乙個新棋局,那麼對於這個新棋局,實際上就相當於
是從上乙個棋局開始,派生下來的子節點 … 依此類推,直至整個遊戲完結
即通過搜尋的乙個稱之為
決策樹的樹,來遍歷所有的決策,以選出最
優的決策
(2)8 數碼
對於這個遊戲,可以用搜尋樹來進行解決。通過初始的棋局,
一共可能有 4 種走法,派生出初始棋局的 4 個子節點,對於
每乙個子節點,相應的又有若干種走法 … 依此類推
(3)八皇后
八皇后問題是乙個以西洋棋為背景的問題:如何能夠在
8×8的西洋棋
棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了
達到此目的,任兩個皇后都不能處於同一條橫行、縱行或斜線上
採用樹形搜尋的方式,可以很容易地生成八皇后的所有的解
當然,搜尋問題,也並不像想象的那麼容易。實際上,之前提過的所有問題,
在搜尋的同時,對應的都還可以優化
不然的話,相應的狀態數量太多,更重要的是,有可能對重複的狀態進行了 訪問
(4)數獨
數獨,這類更難的問題也可以使用樹的方式解決
(5)搬運工
甚至像搬運工這樣的小遊戲:怎麼把磚塊搬運到指定的地點,
都可以使用樹的方式來解決
而類似於自動求解搬運工,也是乙個典型的人工智慧的任務
在早期,搜尋過程近乎就是人工智慧的核心
如:為 ibm 贏得西洋棋冠軍的深藍,它的核心其實就是搜尋
當然這個搜尋不是簡單的僅僅做搜尋,這裡面涉及到很多的優化,
很多的技巧,包括對要搜尋的問題本身的深入分析
而像alphago 這樣的人工智慧和搜尋還是略有不同的,alphago
使用的是機器學習相關的技術
更多樹
在電腦科學領域隨著求解問題的不同,針對不同的問題種類,
計算機科學家還發明了更多的樹,最典型的,如下:
kd 樹、區間樹、哈夫曼樹…
樹這個話題在電腦科學中,佔據著舉足輕重的地位
【made by siwuxie095】
問題 A 更多閏年數
時間限制 1 sec 記憶體限制 128 mb 提交 578 解決 147 狀態 提交 命題人 admin 輸入兩個正整數a和b,表示開始的年份和結束的年份,問從a年到b年有多少閏年?閏年只需要滿足如下兩個條件之一 1 能整除400。2 能整除4,但不能整除100。第一行2個整數a和b,範圍在 1,...
樹形索引(B 樹)
一棵m階的 b 樹和m階的 b 樹的異同點在於 1.有n棵子樹的結點中含有n 個關鍵字 即每個關鍵碼對應一顆子樹 2.所有的終端結點中包含了全部關鍵字的資訊 及指向含有這些關鍵字記錄的指標,且終端結點本身依關鍵字的大小自小而大的順序鏈結。而b 樹 的葉子節點並沒有包括全部需要查詢的資訊 3.所有的 ...
黑白樹 樹形 貪心
題目描述 一棵n個點的有根樹,1號點為根,相鄰的兩個節點之間的距離為1。樹上每個節點i對應乙個值k i 每個點都有乙個顏色,初始的時候所有點都是白色的。你需要通過一系列操作使得最終每個點變成黑色。每次操作需要選擇乙個節點i,i必須是白色的,然後i到根的鏈上 包括節點i與根 所有與節點i距離小於k i...