MIT演算法導論第二節筆記
本節主要講了一些演算法分析的內容
4種漸近符號
求解遞迴式的三種方法:(P38)
1. 代換法(通常可以)
2. 遞迴樹方法(對所有都可以,但不嚴謹)
3. 主方法-主定理(只對特等的遞迴式有效,包含三種情況)
相關推薦
MIT演算法導論第二節筆記
本節主要講了一些演算法分析的內容 4種漸近符號 求解遞迴式的三種方法:(P38) 1. 代換法(通常可以) 2. 遞迴樹方法(對所有都可以,但不嚴謹) 3. 主方法-主定理(只對特等的遞迴式有效,包含三種情況)
MIT演算法導論第一節筆記
演算法分析——研究效能和資源利用的 演算法設計 什麼比效能更重要? 為什麼要學習演算法? 1. 解決最前沿的東西(重複十年前的東西,一般不需要演算法); 2. 是更好使用者體驗的基礎,更好安全性的保障; 3. 效能是最底層的東西,相當於“貨幣”; 4.有趣。 虛擬碼的好
MIT演算法導論第三節筆記——分治思想
這一節主要講了分治思想,首先我應該向大家推薦兩本參考書:《演算法導論》和《演算法概論》,很多講課內容都在這兩本書上,但不限於這兩本書。 這次視訊中設計的演算法如下: 歸併排序 折半查詢 求X的冪 斐波那契數,包括1. 遞迴演算法;2. 用儲存每一個計算過的斐波那契數的方式
MIT演算法導論-第二講-漸進符號,遞迴及解法
1.漸進符號 Θ符號,f(n) = Θ(g(n)),表示f(n)的複雜度既大於等於*g(n)的複雜度,又小於等於g(n)的複雜度,即於g(n)的複雜度相當*。 O符號,f(n) = O(g(n)),表示f(n)的複雜度最多與g(n)一個數量級,即小於等於。
演算法導論 第二章:演算法入門 筆記 (插入排序、迴圈不變式、演算法分析、最好和最壞時間複雜度、選擇排序、分治法、合併排序)
插入排序: 排序問題的定義如下: 輸入:N個數{a1, a2,..., an }。 輸出:輸入序列的一個排列{a'1 ,a'1 ,...,a'n },使得a'n <=a' n<=...<
[演算法導論]網易MIT演算法導論課筆記(簡略版)
Introduction to Algorithm 說明lgn是以2為底的對數 編譯環境:g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 g++ -std=c++11 XX.cpp -o XX 第
演算法導論 第二章 遞迴與分治
階乘函式 斐波那契數列 #include <iostream> #include <cstring> #include <algorithm> using namespace std; // 階乘函式 int fact(in
《演算法導論》讀書筆記(01)——ch02 演算法基礎【插入排序、歸併排序】
《演算法導論》第二章主要討論了兩個演算法問題:插入排序和歸併排序,在介紹兩個演算法的同時,對兩個演算法從執行效率上做了分析。最後對分治演算法進行了做了簡要介紹。下面對這兩種演算法從頭開始分析,並用C語言和JAVA語言進行實現。 目錄 1.插入排序 1.1 演算法思路
n階矩陣一般乘法-《演算法導論》學習筆記五
A、B兩個矩陣均是nxn的矩陣,則兩個矩陣的乘法: 一般的矩陣乘法程式碼: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <
演算法導論 第二十二章:拓撲排序
拓撲排序(針對有向無迴路圖DAG)是深度優先搜尋的一個應用,其結果圖中所有頂點的一個線性排列。 虛擬碼如下: EG: 拓撲排序完整程式碼如下: #include<iostream> #include<iomanip> #include<
【演算法導論】【筆記】【分治法】最近點對問題
尋找最近點對 目錄 尋找最近點對 問題分析 分治法 時間複雜度 題目:在一個 n≥2 個點的集合 Q 中尋找距離最近的點對 問題分析 首先很容易想到暴力破解的方法,但是需要 O(n2) 的時間複雜度,所以考慮使用分治法,但
演算法導論 第二章 迴圈不變式(loop invariant)
Next, we tackle the second property: showing that each iteration maintains the loop invariant. Informally, the body of the outer for loop works by moving
MIT演算法導論公開課之第18課 最短路徑演算法、Bellman和差分約束系統
Bellman-Ford 演算法 圖G=(V,E),選取s∈V作為圖的原點,此演算法可計算最短路徑δ(s,v)(v∈V)或報告出圖中存在負權值的環路。 Exercise 在路徑中存在負權值的環路時,將δ(s,v)設定為-∞。 Bellman-F
桶排序-《演算法導論》學習筆記九
桶排序要求資料均勻、獨立分佈在某個區間上,然後將待排序值按某個區間劃分為幾個區間陣列,然後將待排序的數按這個區間劃分公式有序放入對應桶中,這樣放完之後再按順序從桶中拿出來一個一個放入原陣列。 c程式碼桶可以用連結串列,如待排序陣列的值為0-99,那麼桶可以劃分
MIT演算法導論公開課之第12課 跳躍表
動態搜尋結構 跳躍表(skip list) 樹堆(treap) 紅黑樹(red black tree) B樹(B tree) 跳躍表 一種簡單、高效的動態搜尋結構,使用了隨機化演算法。 插入刪除操作的期望的執行時間為O(lgn),並且這種情
MIT演算法導論——第七講.雜湊表
從作用上來講,構建雜湊表的目的是把搜尋的時間複雜度降低到O(1),考慮到一個長度為n的序列,如果依次去比較進行搜尋的話,時間複雜度是θ(n),或者對其先進行排序然後再搜尋會更快一些,但這兩種方法都不是最快的方法。 第一個話題: 計算機裡面所有儲存的內容都是數字,因此我
MIT演算法導論公開課之第15課 動態規劃、最長公共子序列
動態規劃(Dynamic programming) 動態規劃是一種設計技巧,而不是一種特定的演算法,就像分治法一樣。 最長公共子序列(Longest common subsequence)問題 有兩個序列,序列x[1~m],序列y[1~n],找到它們的最長
MIT演算法導論公開課第八講全域雜湊和完全雜湊
全域雜湊 對於任意雜湊函式而言,都存在一個不好的健集,使得所有的健都會雜湊到同一個槽裡去,那麼如何解決這種情況呢?如何防止對某個鍵集永遠有較差的表現?如何防止競爭對手使用這個鍵集來降低你的效能表現? 一個詞解決這個問題 —— 隨機! 全域雜湊的方法
trie樹-《演算法導論》學習筆記十四
引用一下百度百科的話吧: Trie樹,又稱單詞查詢樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串(但不僅限於字串),所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是:利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串
MIT演算法導論公開課之第3課 分治法
分治法 1. 將一個問題劃分為若干個子問題。 2. 遞迴的解決每一個子問題。 3. 將子問題的解合併成為整個大問題的解。 歸併排序 1. 將一個數組分為兩個子陣列。 2. 遞迴的對每一個子陣列進行排序。 3. 合併兩個有序子陣列。 執行