-
1 # 一滴水的世界丶旋
-
2 # 北航秦曾昌
樹(Tree)是一種抽象的資料型別,用來表示具有樹狀結構性質的資料集合。
樹的種類有很多,具體可分為:
無序樹:樹中任意節點的子節點之間沒有順序關係的樹,也叫做自由樹。
(這種樹一般不作為研究和應用的物件)
有序樹:樹中任意節點的子節點之間有順序關係。有序樹又可分為二叉樹、霍夫曼樹、B樹。
二叉樹:每個節點最多含有兩個子樹的樹稱為二叉樹,分支有完全二叉樹、平衡二叉樹、排序二叉樹。
霍夫曼樹:帶權路徑最短的二叉樹,也稱作最優二叉樹,主要用於資訊編碼。
B樹:對讀寫操作進行最佳化的子平衡的二叉查詢樹,能保持資料有序,擁有多於兩個子樹。
由上可見,樹的變體形式非常多,因此也得到了廣泛應用。下面介紹幾種樹的常見應用場景, 其實很多經典的AI演算法都藉助了樹結構。比如:機器學習中的決策樹(decision tree),一種被廣泛使用的分類演算法。下圖是一個女生決定要不要見相親物件決策樹邏輯視覺化表達(圖中內容只為舉例)。
遊戲中的AI也有樹的身影。一些角色遊戲中,人物的智慧尋路、人物能夠像人一樣避開障礙物自動選擇最優路徑達到指定地點等功能所用的演算法中普遍是A Start啟發式函式尋路演算法,或者其變種最佳化演算法以及與其他演算法結合的混合演算法。
在自然語言處理中,詞向量的是一種目前廣泛應用的自然語言計算機表示方式。詞向量的訓練過程,最先最佳化使用的資料結構是用霍夫曼樹來代替隱藏層和輸出層的神經元,霍夫曼樹的葉子節點起到輸出層神經元的作用,葉子節點的個數即為詞彙表的小大。 而內部節點則起到隱藏層神經元的作用。也就是所謂的Hierarchical Softmax,大大降低了訓練所需要的引數。
xml,html
在應用xml,html等,編寫解析器的時候,不可避免用到樹結構,來描述元素之間的關係。
此外,還有路由協議的編寫、mysql資料庫索引、檔案系統的目錄結構等都借用了不同的樹結構來完成。
回覆列表
我可以說說我瞭解的一些皮毛吧
在大學學完基礎c語言之後,就會去接觸更深層次的演算法和資料結構,這個是對學完c語言基礎不錯的童鞋,才能夠學得不錯的課程,那麼究竟資料結構裡面的tree有什麼用尼?我闡述下我的觀點吧
1、人工智慧
我大學的時候學過這門課程,難度頗深,很多演算法都是聞所未聞,裡面好像有一節神經網路的自我學習演算法用到了,所以在人工智慧領域應該是比較常見的把
2、資料的檢索
我們電腦裡面嚐嚐用到的檢索功能,或者其他網站的檢索,裡面就用到了樹結構