樹形演算法
A. 求教:語言學樹形圖~~~
語言學樹形圖:
樹狀圖,亦稱樹枝狀圖。樹形圖是數據樹的圖形表示形式,以父子層次結構來組織對象。是枚舉法的一種表達方式。樹狀圖也是初中學生學習概率問題所需要畫的一種圖形。
簡介:
最小樹形圖,就是給有向帶權圖中指定一個特殊的點v,求一棵有向生成樹T,使得該有向樹的根為v,並且T中所有邊的總權值最小。最小樹形圖的第一個演算法是1965年朱永津和劉振宏提出的復雜度為O(VE)的演算法。
判斷是否存在樹形圖的方法很簡單,只需要以v為根作一次圖的遍歷就可以了,所以下面的演算法中不再考慮樹形圖不存在的情況。
B. 數學的樹形圖怎麼畫
以搖兩個骰子為例:第一行寫上骰子一,因為骰子能搖出六種可能,所以把這六種可能並排著都寫出來,然後再另起一行,寫上骰子二,同樣有六種可能,然後就在上面寫出的六種可能下面分別寫上這六個可能,就完了。其他類型也以此類推,反正就是先寫出第一個條件的所有可能,再在所有可能下面分別寫出第二個條件的所有可能,以此類推。
C. 如何做樹狀圖
樹狀圖亦稱樹枝狀圖。搜索樹形圖是數據樹的圖形表示形式,以父子層次結構來組織對象。是枚舉法的一種表達方式。
為了用圖表示親緣關系,把分類單位擺在圖上樹枝頂部,根據分枝可以表示其相互關系,具有二次元和三次元。在數量分類學上用於表型分類的樹狀圖,稱為表型樹狀圖(phenogram),摻入系統的推論的稱為系統樹狀圖(cladogram)以資區別。表型樹狀圖是根據群析描繪的,系統樹狀圖是根據一種模擬的假定的性狀進化方向即用電子計算機描繪的。
樹狀圖也是初中學生學習概率問題所需要畫的一種圖形。
如何畫樹狀圖
最小樹形圖,就是給有向帶權圖中指定一個特殊的點v,求一棵有向生成樹T,使得該有向樹的根為v,並且T中所有邊的總權值最小。最小樹形圖的第一個演算法是1965年朱永津和劉振宏提出的復雜度為O(VE)的演算法。
判斷是否存在樹形圖的方法很簡單,只需要以v為根作一次圖的遍歷就可以了,所以下面的演算法中不再考慮樹形圖不存在的情況。
在所有操作開始之前,我們需要把圖中所有的自環全都清除。很明顯,自環是不可能在任何一個樹形圖上的。只有進行了這步操作,總演算法復雜度才真正能保證是O(VE)。
首先為除根之外的每個點選定一條入邊,這條入邊一定要是所有入邊中最小的。現在所有的最小入邊都選擇出來了,如果這個入邊集不存在有向環的話,我們可以 證明這個集合就是該圖的最小樹形圖。這個證明並不是很難。如果存在有向環的話,我們就要將這個有向環所稱一個人工頂點,同時改變圖中邊的權。假設某點u在 該環上,並設這個環中指向u的邊權是in[u],那麼對於每條從u出發的邊(u, i, w),在新圖中連接(new, i, w)的邊,其中new為新加的人工頂點; 對於每條進入u的邊(i, u, w),在新圖中建立邊(i, new, w-in[u])的邊。為什麼入邊的權要減去in[u],這個後面會解釋,在這里先給出演算法的步驟。然後可以證明,新圖中最小樹形圖的權加上舊圖中被收縮 的那個環的權和,就是原圖中最小樹形圖的權。
上面結論也不做證明了。現在依據上面的結論,說明一下為什麼出邊的權不變,入邊的權要減去in [u]。對於新圖中的最小樹形圖T,設指向人工節點的邊為e。將人工節點展開以後,e指向了一個環。假設原先e是指向u的,這個時候我們將環上指向u的邊 in[u]刪除,這樣就得到了原圖中的一個樹形圖。我們會發現,如果新圖中e的權w'(e)是原圖中e的權w(e)減去in[u]權的話,那麼在我們刪除 掉in[u],並且將e恢復為原圖狀態的時候,這個樹形圖的權仍然是新圖樹形圖的權加環的權,而這個權值正是最小樹形圖的權值。所以在展開節點之後,我們 得到的仍然是最小樹形圖。逐步展開所有的人工節點,就會得到初始圖的最小樹形圖了。
如果實現得很聰明的話,可以達到找最小入邊O(E),找環 O(V),收縮O(E),其中在找環O(V)這里需要一點技巧。這樣每次收縮的復雜度是O(E),然後最多會收縮幾次呢?由於我們一開始已經拿掉了所有的 自環,我門可以知道每個環至少包含2個點,收縮成1個點之後,總點數減少了至少1。當整個圖收縮到只有1個點的時候,最小樹形圖就不不用求了。所以我們最 多隻會進行V-1次的收縮,所以總得復雜度自然是O(VE)了。由此可見,如果一開始不除去自環的話,理論復雜度會和自環的數目有關。
D. 數據結構c二叉樹的演算法
額 我來講講吧:
第一個問題 你問應該用何種方式來存儲,這個問題糾結了,什麼叫應該用什麼方式存儲,當然是都可以啦兩種方式~~不過你的意思可能是哪種方式最好,如果就是進行那兩種操作的話,是順序存儲方式比較好(你應該知道順序和鏈式兩種吧);其實二叉樹是很少用順序方式存儲的。但是由於你已經說了你是完全二叉樹,那麼就可以考慮順序方式存儲了;書序二叉樹每個節點你可以編號,直接運算序號就可以找到父節點和兩個子節點了。
第二個問題 用C++寫了 就採用鏈式結構吧 每個節點內有lchild rchild指針分別指向左右兩孩子結點;結點類型就假定Node吧:
void exchange (Node * node){
exchange(node->lchild);
exchange(node->rchild);
Node * n;
n=node->lchild;
node->lchild=node->rchild;
node->rchild=n;
}//遞歸方式實現的函數
exchange(bt);
非遞歸演算法就需要藉助隊列了 代碼較長 不想打了;隊列就是實現按層次操作每個節點;操作玩的結點一次出隊,出隊的同時他們的孩子一次入隊,最後沒有結點入隊出隊就演算法結束了;一般都是深度優先的遞歸演算法來使用樹形結構,很少有按層次結構非遞歸演算法的,樹形結構發明出來就是讓你深度搜索用的
E. 數據結構中的是樹形的結構有哪些,演算法叫什麼名字
基礎類:二叉搜索(排序)樹,線索二叉樹,哈夫曼樹(最優二叉樹),二叉堆
平衡樹類:AVL,紅黑樹,2-3樹,2-3-4樹,B樹,B+樹,B-樹,treap,SBT。
優先隊列類:左高樹(左偏樹,可並堆,斜堆),雙端堆,斐波那契堆
集合類:並查集
區間樹類:線段樹,劃分樹,歸並樹,樹狀數組
字母樹類:字典樹,後綴樹。AC自動機演算法
動態樹類:伸展樹
計算幾何類:KD-tree (塊狀樹),4叉樹
RMQ轉LCA:笛卡爾樹
圖論相關:最小生成樹,無根樹
其它:敗者樹,博弈樹
F. 有哪位可以舉一個二進制樹形搜索的演算法實例
加法法則:
0+0=0,0+1=1+0=1,1+1=10減法,當需要向上一位借數時,必須把上一位的1看成下一位的(2)10。
減法法則:
0
-
0
=
0
1
-
0
=
1
1
-
1
=
0
0
-
1
=
1
有借位,借1當(10)2
0
-
1
-
1
=
0
有借位
1
-
1
-
1
=
1
有借位。乘法法則:
0×0=0,0×1=1×0=0,1×1=1除法應注意:
0÷0
=
0
0÷1
=
0
1÷0
=
0
(無意義)除法法則:
0÷1=0,1÷1=1
二進制與
G. 初三數學樹狀分類法的定義
最小樹形圖,就是給有向帶權圖中指定一個特殊的點v,求一棵有向生成樹T,使得該有向樹的根為v,並且T中所有邊的總權值最小。最小樹形圖的第一個演算法是1965年朱永津和劉振宏提出的復雜度為O(VE)的演算法。
判斷是否存在樹形圖的方法很簡單,只需要以v為根作一次圖的遍歷就可以了,所以下面的演算法中不再考慮樹形圖不存在的情況。
在所有操作開始之前,我們需要把圖中所有的自環全都清除。很明顯,自環是不可能在任何一個樹形圖上的。只有進行了這步操作,總演算法復雜度才真正能保證是O(VE)。
首先為除根之外的每個點選定一條入邊,這條入邊一定要是所有入邊中最小的。現在所有的最小入邊都選擇出來了,如果這個入邊集不存在有向環的話,我們可以 證明這個集合就是該圖的最小樹形圖。這個證明並不是很難。如果存在有向環的話,我們就要將這個有向環所稱一個人工頂點,同時改變圖中邊的權。假設某點u在 該環上,並設這個環中指向u的邊權是in[u],那麼對於每條從u出發的邊(u, i, w),在新圖中連接(new, i, w)的邊,其中new為新加的人工頂點; 對於每條進入u的邊(i, u, w),在新圖中建立邊(i, new, w-in[u])的邊。為什麼入邊的權要減去in[u],這個後面會解釋,在這里先給出演算法的步驟。然後可以證明,新圖中最小樹形圖的權加上舊圖中被收縮 的那個環的權和,就是原圖中最小樹形圖的權。
上面結論也不做證明了。現在依據上面的結論,說明一下為什麼出邊的權不變,入邊的權要減去in [u]。對於新圖中的最小樹形圖T,設指向人工節點的邊為e。將人工節點展開以後,e指向了一個環。假設原先e是指向u的,這個時候我們將環上指向u的邊 in[u]刪除,這樣就得到了原圖中的一個樹形圖。我們會發現,如果新圖中e的權w'(e)是原圖中e的權w(e)減去in[u]權的話,那麼在我們刪除 掉in[u],並且將e恢復為原圖狀態的時候,這個樹形圖的權仍然是新圖樹形圖的權加環的權,而這個權值正是最小樹形圖的權值。所以在展開節點之後,我們 得到的仍然是最小樹形圖。逐步展開所有的人工節點,就會得到初始圖的最小樹形圖了。
如果實現得很聰明的話,可以達到找最小入邊O(E),找環 O(V),收縮O(E),其中在找環O(V)這里需要一點技巧。這樣每次收縮的復雜度是O(E),然後最多會收縮幾次呢?由於我們一開始已經拿掉了所有的 自環,我門可以知道每個環至少包含2個點,收縮成1個點之後,總點數減少了至少1。當整個圖收縮到只有1個點的時候,最小樹形圖就不不用求了。所以我們最 多隻會進行V-1次的收縮,所以總得復雜度自然是O(VE)了。由此可見,如果一開始不除去自環的話,理論復雜度會和自環的數目有關。
1、Tag總的來說是一種分類系統,有人把他稱為大眾分類(Folksonomy)。但是tag又不同於一般的目錄結構的分類方法,首先tag能以較少的代價細化分類,想像一下,一篇涉及面比較廣的文章,比如一篇談論20世紀以來物理學的成就的文章,可能會涉及到相對論、量子力學、黑洞理論、大爆炸宇宙理論,可能涉及到愛因斯坦、普朗克等科學家,甚至可能涉及到諾貝爾獎。如果你用目錄結構的分類方法的話,根本不可能按這篇文章涉及到的各個方面來分類,因為要細化分類,將使整個目錄結構異常龐大,更加不利於資料的組織以及查找。而tag則不同,他可以自由地不考慮目錄結構的給文章進行分類,各個tag之間的關系是一種平行的關系,但是又可以根據相關性分析,將經常一起出現的tag關聯起來,而產生一種相關性的分類。 2、Tag也可以說是一種關鍵詞標記,利於搜索查找。但是tag也不同於一般的關鍵詞,用關鍵詞進行搜索時,只能搜索到文章裡面提到了的關鍵詞,但tag卻可以將文章中根本沒有的關鍵詞做為tag來標記,比如上面那篇文章,我可以標記為「資料」或者「歷史」,當然更多的時候是標記為「物理」,不過,我如果標記上「資料」的tag,則可以將所有資料性的文章全部關聯起來,便於查找。 參考:真·踏網無痕 那麼,什麼是Tags?很簡單,往下看; ·經典的信息構成模式; 在傳統的網頁組成中,我們通常使用Taxonomy(分類法)來歸納、整理和存放我們的信息,圖書館是一個絕好的例子,所有的信息從一個點開始,形成樹狀的分類,由此構成一個完整的、相互聯系起來邏輯體系; 這個體系從一開始就是人為分類形成的,在我們需要檢索的時候,幾乎不需要費多大的勁; [例子]比如我們的Blog,首先有一個主標題,然後下分若干分類,實際的文章則分類儲存在這些不同的分類中;在一般情況下,我們不允許一個文章同時存在於多個分類中,以便於我們管理的方便和檢索的唯一性; 在網路上,dmoz和wiki都算是比較典型和知名的例子; ·散秩的信息構成模式; 看似無序的浩渺信息,其中的絕大部分是通過「語言」來描述的,這表明了這些信息的指向性,因此我們通過提取這些語言(文字、文本)的相同部分,以此獲得相關的信息;這些信息平時是完全鬆散、互不聯系的,當且僅當我們對其加以提取的時候才呈現相對緊湊的組織結構,即便如此,這個結構和經典的分類結構相比,仍然是足夠散秩的。 [例子]你可能已經想到了,Google嘛。目前絕大部分的搜索引擎所依賴的正是這一點,因此對於分詞的研究是這些搜索引擎始終的重點和痛苦,其他的不說,僅僅邏輯實證主義和日常語言學派這兩個當代的流派就足夠他們折騰到下個世紀去了。 舉一個惡搞點的例子:當我說:「他媽」的時候,僅僅檢索關鍵字而並不關心其在日常語言中實際運用的搜索引擎怎麼知道我是在罵人還是在陳訴一個歸屬性事實呢?更何況我們經常面對google上數萬和關鍵字原本語義要求完全不同的搜索結果長聲嘆息。 [簡介] 邏輯實證主義:認為人類的日常語言充滿的謬誤,需要徹底厘平,重構一個像數學一樣完美的邏輯語言體系; 日常語言學派:認為人類的日常語言是非常合理而符合現實的,「完美」的邏輯語言並不存在而且也不符合現實;唯一的問題在於人們使用日常語言的時候出了一些方法上的問題,這需要我們加以重視和研究。 (後者正是我傾向贊同的結論) ·符合未來發展的信息構成模式; 現在我們綜合起來考察以上兩種在我們日常生活中顯得日益重要的信息構成模式,會發現他們各有優點和缺陷; 對於前者而言,語言所表達和內涵的思想是廣博的,構造簡單的分類邏輯無法詮釋和標識某一篇文章所設計的全部重點,復雜的分類則將陷入無限微觀的悖論邏輯; 對於後者而言,除開分詞的煩惱,Google們也許還希望承天下之大義擔負起教導每一個人重修日常語言學分的重任,並且要求每一個人都能達到維特根斯坦的高度。 路德維奇·維特根斯坦?對了,這終於回到我們的重點。 維特根斯坦本人正是邏輯實證主義和日常語言學派先後的奠基人,而在他的後期的日常語言思想中,他提出了一個大家相對比較熟悉的觀點:家族相似。 以下引用一段話作大致的解釋: 維特根施坦從「反本質主義」立場出發反對語詞的定義化。本質主義者認為同一類事物之所以成為該類事物,是由於它們具有共同的本質(共相),定義就是規定事物的這種本質。維特根施坦則認為事
H. 決策樹法分為那幾個步驟
1、特徵選擇
特徵選擇決定了使用哪些特徵來做判斷。在訓練數據集中,每個樣本的屬性可能有很多個,不同屬性的作用有大有小。因而特徵選擇的作用就是篩選出跟分類結果相關性較高的特徵,也就是分類能力較強的特徵。在特徵選擇中通常使用的准則是:信息增益。
2、決策樹生成
選擇好特徵後,就從根節點觸發,對節點計算所有特徵的信息增益,選擇信息增益最大的特徵作為節點特徵,根據該特徵的不同取值建立子節點;對每個子節點使用相同的方式生成新的子節點,直到信息增益很小或者沒有特徵可以選擇為止。
3、決策樹剪枝
剪枝的主要目的是對抗「過擬合」,通過主動去掉部分分支來降低過擬合的風險。
【簡介】
決策樹是一種解決分類問題的演算法,決策樹演算法採用樹形結構,使用層層推理來實現最終的分類。
I. 樹狀圖怎麼畫
1、首先畫出樹狀圖的樹干。
2、接著畫出多個枝幹,重復幾次。
3、最後在各個枝幹上寫出對應的名稱即可。
總結:
1、樹形圖是數據樹的圖形表示形式,以父子層次結構來組織對象。是枚舉法的一種表達方式。樹狀圖也是初中學生學習概率問題所需要畫的一種圖形。
2、最小樹形圖,就是給有向帶權圖中指定一個特殊的點v,求一棵有向生成樹T,使得該有向樹的根為v,並且T中所有邊的總權值最小。最小樹形圖的第一個演算法是1965年朱永津和劉振宏提出的復雜度為O(VE)的演算法。判斷是否存在樹形圖的方法很簡單,只需要以v為根作一次圖的遍歷就可以了。