[toc]
題型
- 判斷題,對了得分,錯了倒扣
- 簡答題
- 概念、什么是平衡二叉樹、什么是有向連通圖
- 給一個AVL樹、SPlay,畫出計算過程
- 給一個函數判斷是不是遞歸、這個遞歸有沒有什么問題
- 是否少了邊界條件或者遞歸條件
- P是不是NP的子集、你能解釋是為什么嗎?分別說出他們的概念
- 解釋什么是Worse-case和平均情況、什么時候用WC什么時候用AC、AC和平均分攤之間有什么區別
- 排序算法的basic操作
- 給一個數據寫一下最近鄰
- 給一個圖寫出MST
- 紅黑樹的判斷、構造一個紅黑樹(只要寫過程、不用實現)
- splay tree 的時間復雜度
Lecture 1-2
P19.Optimizing and heuristic algorithms
- 最優解(優化算法)和啟發式的區別、原因
P20.Why heuristics?
- 為什么選擇啟發式
P22.Constructive heuristics
- 均勻分布,在某個范圍內等概率生成某些數
- 步驟、過程,step0-2、了解一下流程圖
P26-.Huffman’s algorithm
- 哈夫曼編碼、文字壓縮
P29.Graph
- 圖的定義
P31.Binary tree
- 什么是二叉樹
P35.Tries
- 什么是Tries
P36.Definition - Prefix
- 什么是前綴、后綴
- 給出字符串、能夠寫出前綴后綴、注意不止一個、是有一系列的前綴
P42-.Huffmans’s algorithm
- 給一個例子,然后畫出過程
P58.Neighborhood search
- 用來求解背包問題、把背包問題描述成數學的形式、自己寫一遍算法、寫出計算步驟
- 1.x1
- 2.求解x2(根據已知方法)寫計算過程
P89.Tabu search (不確定會考)
- 哪些要、哪些不要
P119.Mergesort
- 先分解在合并排序的過程
- 寫出每步步驟
P133.Dynamic Programming
- 動態規劃找出最優解、相比貪心算法的優點
P138
- 不選、選、畫出圖、動態規劃要掌握該圖
- 背包問題的動態規劃圖
Lecture 3-4
P4-
- 連通圖、有向圖、計算出度入度
P8.Cycle in directed graph
- 回路存在即不能進行拓撲排序
P10.Connected undirected graph
- 概念判斷、什么是強連通圖、連通圖、判斷這個圖是不是強連通的、判斷是不是完全圖
- 完全的無向圖里面的邊數的關系
P15.Tree
- 什么是樹、判斷是不是樹
P18.Graph representation
- 圖的兩種存儲方式、把選擇的那一種畫出來
- 各自的優缺點
- 矩陣索引快,但是空間消耗大
- 鏈表慢,但是節省空間,沒有無效存儲、多次搜索(不知道是否正確具體參考ppt?)
P33.Prim’s algorithm
- 根據這兩個算法、畫出MST、會畫就可以了
P35.Topological ordering
- 找出拓撲排序、并且解釋為什么不能有環、彼此是彼此的依賴結點
Lecture 5-6
P2.What is complexity analysis?
- 什么是算法復雜度
P4-5.Basic operations of an algorithm & What is a basic operation?
- 不同算法的。。。排序中的遍歷過程、merge比較
P7.Complexity as a function of the input - Examples
- 常見算法的復雜度、最好的情況、最壞的情況、在什么情況下最好
P20.Average and Worst case analysis
- 掌握最壞的情況、不用掌握平均的
P23.Relative growth rate of functions
- 給出一個表達式,可以用Big O的形式表達出來、去掉常數項和低次項還有系數
P29.Example: O(n3), Ω(n3), and Θ(n3)
- 上下界、O的上界、Ω的下界、Θ的確界
P36.P and NP
- NP中N 的含義、NP是否等于P、一般是不等、說明原因
P46.How to show that a problem is N P complete I
- 過于具體、可以簡化
P47.How to show that a problem is N P complete II
- 具體證明步驟、會證明
- 把第二條分成兩點
P48.Amortized analysis - Initial example
- 只需要掌握基本概念、 a sequence of operations是關鍵詞
P53.Amortized vs average-case analysis
- 兩者并不一樣、AC是發生的概率,并不考慮多個步驟再平均
Lecture 7-8
P4.Binary tree
- 二叉樹的基本操作
P5.Binary search tree
- 什么是balance search tree、大小關系、給出一個不平衡的->平衡
P20.Tree balance
- 如何判斷一棵樹是否平衡
P29.Inserting
- 要會操作、和splay tree 兩個考一個
P30.Splay trees
- 考步驟、會插入刪除
P58.Red-black trees
- 掌握四條定義、會判斷是否是紅黑樹
最后一次復習內容
splay tree (肯定考)
- 旋轉目的是把新加入的節點放到根節點,使得方便。。。
- 理由:因為新加入的節點很可能再次使用
- 旋轉方式:
[圖片上傳失敗...(image-462672-1547515591948)]
紅黑樹
-
判斷
- Each node is colored either red or black.
- The root and leaves(NIL's--葉子節點標示) are black.
- If a node is red, its children must be black.
- Every path from a node to a leaf must contain the same number of black nodes.
- = Num_black(node)
-
構造
- Self-balancing BST
-
插入
新插入的是紅色,保證第四條,并且保證BST性質
[圖片上傳失敗...(image-8296fb-1547515591949)]-
四種情況
- z = root
- 節點變為黑色
- z.uncle = Red
- Grandparent、Parent、Uncle 顏色轉成相反的顏色
[圖片上傳失敗...(image-5e4ec7-1547515591949)]
- Grandparent、Parent、Uncle 顏色轉成相反的顏色
- z.uncle = Black(triangle)
- 旋轉Parent節點,變成線性
[圖片上傳失敗...(image-921444-1547515591949)]
- 旋轉Parent節點,變成線性
- z.uncle = Black(line)
- 旋轉Grandparent節點,Grandparent、Parent 顏色轉成相反的顏色
[圖片上傳失敗...(image-1a34ff-1547515591949)]
- 旋轉Grandparent節點,Grandparent、Parent 顏色轉成相反的顏色
- z = root
suffix tree
-
suffix 有很多
- s = abaaba$
- $
- a$
- ba$
- aba$
- aaba$
- baaba$
- abaaba$
- s = abaaba$
-
suffix trie 樹
- 可以得到三個信息
- 有沒有
- 有幾個
- 分別從哪邊開始
[圖片上傳失敗...(image-1f6fe5-1547515591949)]
- 可以得到三個信息
-
兩個字符串判斷公共的子串
- 分別先往子串后面加上富豪
- 最后標上每一層X or Y or XY,找XY層數最多的,字符最長的,把邊讀出來就是最長子串
[圖片上傳失敗...(image-43362e-1547515591949)]
[圖片上傳失敗...(image-e239eb-1547515591949)]