聊聊整體性學習方法


「整體性學習方法」是在一本叫做《如何高效學習》的書中看到的。這本書的作者是個老外,他用一年就學完了四年的麻省理工課程。而這本書正是其這一年來的學習心得,書中介紹了他的學習方法。

一開始看到這本書,我是很抗拒的,感覺就是一本雞湯書。再加上這本書理論居多,很多時候都得自己去摸索,所以我剛開始讀也不怎么在意。一直到最近一段時間,我才慢慢地體會到了他說的「整體性」學習方法是什么。

什么是整體性學習方法

在聊我的體會之前,我先簡單介紹一下整體性學習方法。整體性學習方法有 5 個步驟,但是並非按部就班,只是按此順序進行,不用拘泥於這種順序。

  1. 獲取 —— 通過感官獲取信息。在這個階段我們獲取到的信息還只是信息,沒有聯系起來。例如我們知道了二叉搜索樹這個概念、二叉平衡樹這個概念等。
  2. 理解 —— 明白信息的表面意思。對應本例就是理解了紅黑樹的概念。
  3. 擴展 —— 與其他信息建立聯系。擴展有三種方式:第一,深度擴展,擴展知識的背景。例如紅黑樹是怎么出現的,為什么要出現紅黑樹等。第二,橫向擴展,探究知識的聯系。例如AVL樹和紅黑樹有什么聯系和區別?第三,縱向擴展,與其他結構聯系后,從其他結構的角度探究知識。縱向擴展指的是我們將樹結構形成一個知識體系后,與其他知識體系再聯系,例如與算法中的知識體系聯系,看看樹結構在哪些算法中得到應用。
  4. 糾錯 —— 刪除錯誤聯系。在我們理解和擴展過程中,總會出現一些錯誤的理解。這時候我們需要將這些錯誤的理解剔出,有必要的話再次梳理知識結構。通過不斷的理解、擴展、糾結,知識結構會趨向於穩定。
  5. 應用 —— 將知識應用到各種情景中去,包括現實生活。當我們形成知識體系,並對知識點有了相對深刻的理解之后,就需要去應用了。例如樹結構這個知識點,我們可以在實際工作中去尋找合適的應用場景。例如:B樹適合於海量數據的排序,而B+樹則適合海量數據的范圍查詢。

一個簡單的例子

為了讓大家理解整體性學習方法的應用,我們這里用樹結構的學習做一個例子。

我們知道樹是一種最基本的數據結構,其中樹又有:二叉樹、二叉搜索樹、AVL樹、紅黑樹等等。如果我們不適用整體性學習方法,那么我們的學習步驟是這樣的:

  • 什么是二叉樹?二叉樹的屬性是什么?
  • 什么是二叉搜索樹?二叉搜索樹的屬性是什么?
  • ……
  • ……

可以看到我們學習的時候,知識點之間是分散的,沒有聯系的。但如果我們有意識地去使用整體性學習方法,那么我們的學習路線是這樣的:

  • 弄懂什么是二叉樹、二叉搜索樹、AVL樹、紅黑樹等。
  • 理解並擴展這些概念,例如:二叉樹與二叉搜索樹的區別?二叉搜索樹與AVL樹的區別?
  • 糾正之前對於這些概念的錯誤理解
  • 思考這些樹結構在實際工作中的應用

經過一段時間的整理,我會形成下面這樣的思維導圖。

上面的思維導圖基本上把我們所有的樹結構都涵括了。但單單是思維導圖還不夠,你還必須弄清楚它們的內在聯系。在我的記憶中,上面列出的 5 個樹結構都是有聯系的。

  • 二叉樹,這是最基本的樹結構,是我記憶的起點。
  • 二叉搜索樹,在二叉樹的基礎上對元素進行排序。
  • 二叉平衡樹,二叉搜索樹在極端情況下退化成鏈表,所以就要對子樹高度做限制,那么二叉平衡樹就誕生了。而二叉平衡樹有兩種,一種是 AVL 樹,它是高度平衡的自平衡二叉樹,每個子樹的高度差不能超過1。而紅黑樹則是近似平衡的平衡二叉樹,最長路徑不會超過最短路徑的兩倍。
  • B樹:是在二叉樹的基礎上進化而成的,其主要用於解決大數據量的數據搜索問題(IO問題)。例如我們的文件系統搜索文件,不可能把所有文件信息加載到內存,這時候就需要B樹來實現這一操作。
  • B+樹:B樹只能解決單一記錄的搜索問題,但如果我們要查詢某個范圍的數據呢?例如查詢數據庫年齡在20-30的用戶,這時候B樹就無能為力了。這時候B+樹就能發揮其功能。B+樹在B樹的基礎上在葉子節點增加了向后的引用,從而可以快速地查找某一范圍的數據。

經過我這么一套說下來,你是不是覺得它們都是有聯系的呢?通過這樣的記憶,我們能記得更牢固。因為知識點之間都是有關聯的,只有我們找到它們之間的關聯,我們才能記得更牢固。

另外一個例子

上面關於樹結構的總結是一個例子,其最重要的是找到知識點之間的聯系,從而將他們從獨立的知識組織成一個網絡。這樣我們不需要記住所有的知識點,而只需要記住單獨一個入口,從這個入口我們可以推出其他所有知識點。

例如:在樹結構這個例子中,我記住了二叉樹。那么二叉樹+排序,就變成了二叉搜索樹。二叉搜索樹+解決鏈表問題,就是二叉平衡樹。為了提高修改效率,就有了 AVL 樹和紅黑樹。

不同知識點的關聯可能不太一樣,這就需要自己去學習尋找聯系了。例如我們經常用到的 Java 虛擬機知識點,你能形成一個知識網絡么?還是只有零星的一點記憶?對於我來說,我對於 Java 虛擬機的記憶是這樣的:

  • Java源文件到Class文件,對應編譯器和字節碼規則。
  • 從Class文件到內存,對應類加載機制和內存結構。
  • 從內存到運行階段,對應垃圾回收、垃圾回收器、雙親委托加載機制。

簡單地說,我使用 Java 文件的運行過程來記憶 JVM 的所有知識點。一個 Java 文件從源文件到字節碼文件、再到內存、再到運行、再到類加載機制、再到垃圾回收,基本上涵括了 JVM 的所有知識點。

總結

整體性學習方法看着比較雞湯,但你嘗試過一次之后就覺得很不錯,再也停不下來了。整體性學習方法不但讓你記住知識點,還讓你對比、分析他們之間的區別,讓你在知識點之間建立聯系,從而讓你記得更加深刻。

整體性學習方法需要我們吸取大量的信息,並在這些信息中建立聯系,並且應用起來。對於初學者來說,這樣其實是很有難度的。但如果你已經入門了,使用這種方法去學習效率會高許多。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM