題記:花了斷斷續(xù)續(xù)四個(gè)月的時(shí)間,終于將Coursera上Robert Sedgewick老師的普林斯頓兩部分算法課學(xué)習(xí)完。上課時(shí)僅以滿分完成作業(yè)為目標(biāo),每周都趕得緊緊張張,回想起來才發(fā)現(xiàn)這些基本數(shù)據(jù)結(jié)構(gòu)有些已經(jīng)遺忘到只剩下一個(gè)概念了,于是做個(gè)計(jì)劃:溫習(xí)一遍教材,并把這些基本數(shù)據(jù)結(jié)構(gòu)手寫一遍加深印象。
第一章 基礎(chǔ)
1. 算法課的正確打開方式
1.1. 研究一個(gè)新的應(yīng)用領(lǐng)域時(shí),如何將其轉(zhuǎn)換為可計(jì)算問題:
1)定義API;
2)根據(jù)特定的應(yīng)用場(chǎng)景開發(fā)用例代碼;
3)定義類實(shí)例變量所需的數(shù)據(jù)結(jié)構(gòu)(一組值集的表示),并通過它實(shí)現(xiàn)API所對(duì)應(yīng)的抽象數(shù)據(jù)類型;
4)描述算法(實(shí)現(xiàn)一系列操作的方法),并根據(jù)它實(shí)現(xiàn)類中的實(shí)例方法;
5)分析算法的性能特點(diǎn)。
1.2. 在實(shí)驗(yàn)可以重復(fù)執(zhí)行以及假定可以被證偽的前提下,如何通過科學(xué)方法得出正確的計(jì)算模型(算法):
1)細(xì)致地觀察應(yīng)用場(chǎng)景的特點(diǎn);
2)根據(jù)觀察結(jié)果提出假設(shè)模型;
3)根據(jù)模型預(yù)測(cè)計(jì)算結(jié)果;
4)繼續(xù)觀察并核實(shí)預(yù)測(cè)的準(zhǔn)確性;
5)如此反復(fù)直到預(yù)測(cè)和觀察一致。
1.3. 書中研究各類問題的基本步驟(上文1&2):
1)完整而詳細(xì)地定義問題,找出解決問題所需的基本抽象操作并定義一份API;
2)簡(jiǎn)潔地實(shí)現(xiàn)一種初級(jí)算法,給出一個(gè)精心組織的開發(fā)用例并使用實(shí)際數(shù)據(jù)作為輸入;
3)當(dāng)實(shí)現(xiàn)所能解決的問題的最大規(guī)模達(dá)不到期望時(shí)決定改進(jìn)還是放棄;
4)逐步改進(jìn)實(shí)現(xiàn),通過經(jīng)驗(yàn)性分析或(和)數(shù)學(xué)分析驗(yàn)證改進(jìn)后的效果;
5)用更高層次的抽象表示數(shù)據(jù)結(jié)構(gòu)或算法來設(shè)計(jì)更高級(jí)的改進(jìn)版本;
6)如果可能盡量為最壞情況下的性能提供保證,但在處理普通數(shù)據(jù)時(shí)也要有良好的性能;
7)在適當(dāng)?shù)臅r(shí)候講更細(xì)致的深入研究留給有經(jīng)驗(yàn)的研究者并繼續(xù)解決下一個(gè)問題。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26