About

Algorithm Notes

I am taking notes of computer algorithms in zh-Hant.

These notes are free for non-commercial usage. Acknowledgement is not required but would be appreciated.

Most notes are not well-reviewed. If you find any mistakes, please leave message here.

本站提供演算法教學文章。大家可以自行擷取網頁圖文。不要為非作歹、謀取私利就行了。

本站處於創建階段,內容不夠詳盡周全。若讀者發現錯誤,歡迎利用留言板回報,俾能改正,造福後人。

Domain

I give attention to algorithms in mathematics (graph theory, number theory, geometry, analysis, ...).

I also give attention to algorithms for multimedia (natural language processing, audio processing, image processing, computer graphics, ...).

The following sections are brief introductions to all areas that are covered in this website. Some books or lectures are listed as reference.

以下簡介本站涵蓋的領域。

本站主要涉及數學領域:圖論、數論、幾何、分析、……。

本站也涉及多媒體領域:自然語言處理、聲音處理、影像處理、計算機圖學、……。

而這些領域並非主要關注方向:作業系統、編譯器、網路、資料庫、軟體工程、資訊安全、APP與網頁開發、……。

就廣度而言,每個領域足以開設數門課程,內容豐富。就深度而言,每個領域僅止於國際大學校院的課堂程度,內容淺薄。

雖說如此,也不是全部都得弄懂。若有需要,再來學習。大可不必望著目錄自己嚇自己。

一間便利商店的商品,超過一千種,每一件都是貼近日常生活的商品。對於店家來說,每一樣商品都有人買;對於單一顧客來說,不會每一樣商品都買。

換個話題。想要學習一個領域,無非是求學或自學。求學效率大於自學效率,大家也都盡可能去學校求學。然而台灣國情特殊,上述這些領域,難以求學,只好自學。想要自學,無非是讀講義或讀書。讀講義效率大於讀書效率,大家也都盡可能從課程網站找到講義。然而講義難找,書好找。大多數時候還是得讀書。

讀講義方面,使用領域名稱作為搜尋關鍵字,並添加lecture note,在美國搜尋引擎網站花點時間找找,就能找到國際大學院校的課程網頁,從中找到課程講義。或者在美國慕課網站、美國影音網站花點時間找找,就能找到熱心的地球人拍影片念講義給你聽。

讀書方面,使用領域名稱作為搜尋關鍵字,在美國購物網站隨手一找,就能找到專業人士所寫的專業書籍,數量多到目不暇給。儘管輪不到我操心,以下我還是列出幾本我覺得內容很有特色的書籍,也許你會有興趣。

每個人的生活都不同,每個人的見聞也不同。每個人所寫的講義和書籍,都是作者自身的偏見。想要客觀瞭解一個領域,無非就是多讀。嘮叨就到這裡吧。

Algorithm

Algorithm

「演算法」是資料的計算過程,搭配資料結構一起使用。主要目標是減少儲存空間、縮短計算時間。如果不能兩全其美,那就隨機應變吧。

Algorithms
Algorithms
Techniques for Designing and Analyzing Algorithms
Introduction to Algorithms
Introduction to Algorithms: A Creative Approach
Algorithms in a Nutshell: A Practical Guide
Algorithm Design
An Introduction to the Analysis of Algorithms
The Algorithm Design Manual
Jeff Erickson
Erik Demaine
David Eppstein
アルゴリズム図鑑 絵で見てわかる26のアルゴリズム
繁:《演算法圖鑑:26種演算法 + 7種資料結構,人工智慧、數據分析、邏輯思考的原理和應用全圖解》
簡:《我的第一本算法书》

Grokking Algorithms: An illustrated guide for programmers and other curious people
繁:《寫程式前就該懂的演算法:資料分析與程式設計人員必學的邏輯思考術》
繁:《白話演算法!培養程式設計的邏輯思考》
簡:《算法图解》

Out of their Minds: The Lives and Discoveries of 15 Great Computer Scientists
繁:《勇闖資訊新未來:打造資訊科技的幕後英雄》
简:《奇思妙想:15位计算机天才及其重大发现》

Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today's Computers
繁:《改變世界的九大演算法:讓今日電腦無所不能的最強概念》
简:《改变未来的九大算法》

Automate This: How Algorithms Came to Rule Our World
繁:《演算法統治世界》
简:《算法帝国》

Data Structure

「資料結構」是資料的儲存格式,搭配演算法一起使用。主要目標是減少儲存空間、縮短計算時間。如果不能兩全其美,那就隨機應變吧。

Fundamentals of Data Structures in C++
Sequential and Parallel Algorithms and Data Structures: The Basic Toolbox
Foundations of Multidimensional and Metric Data Structures
Compact Data Structures: A Practical Approach
Purely Functional Data Structures

Computational Mathematics

Mathematics / Computational Mathematics

「數學」分為四大分支。

數論:研究數字。0 1 2 3 4 5。
代數:研究運算。寫成符號、寫成規則。
幾何:研究連續數組。點、線、面。
分析:研究連續函數。斜率、容積。

「計算數學」是數學引入演算法。數學的每一種分支都可以引入演算法,形成新領域。

Number Theory 數論    Computational Number Theory 計算數論
Algebra       代數    Computational Algebra       計算代數
Geometry      幾何    Computational Geometry      計算幾何
Analysis      分析    Numerical Analysis          數值分析

其下還可以細分許多分支。本站只涉及其中一些分支:擁有實際用途的那些分支。

Algorithmic Graph Theory 計算圖論
應用:複雜網路分析

Combinatorial Optimization 組合最佳化
應用:運籌學

Computational Number Theory 計算數論
應用:編碼理論

Analytic Number Theory 解析數論(數學分支)
應用:工程計算機

Computational Geometry 計算幾何
應用:地圖、模型、電玩

Discrete Differential Geometry 離散微分幾何(數學分支)
應用:模型製作

Numerical Analysis 數值分析
應用:各種工程領域

Numerical Linear Algebra 數值線性代數
應用:計算機科學的各種應用領域

本站也額外整合了一些應用數學領域。

Engineering Mathematics 工程數學
應用:各種工程領域

Discrete Mathematics 離散數學
應用:計算機科學

Data Processing 資料處理
應用:商業分析

Signal Processing 訊號處理
應用:財經分析、生醫訊號處理、電腦音樂

String Processing 字串處理
應用:文字處理、基因序列比對

Coding Theory 編碼理論
應用:通訊設備、儲存設備

Graph Theory / Algorithmic Graph Theory

「圖論」探討多個元素的兩兩關係。

「計算圖論」同時使用演算法與圖論的知識,橫跨兩個領域。

例如森林(無環)、二分圖(無奇環)、弦圖(無奇洞)就是考慮了時間複雜度所得到的圖。

Algorithms in C++, Part 5: Graph Algorithms
Algorithms on Trees and Graphs: With Python Code
Algebraic Graph Algorithms: A Practical Guide Using Python
Guide to Graph Algorithms: Sequential, Parallel and Distributed
Graph and Matrices

Combinatorics / Combinatorial Optimization

「組合學」又譯作「組合數學」,探討排列與組合。例如找出排列數量、組合數量,遵循給定規則。高中數學課程已經介紹了一些簡潔的數學公式。

「組合最佳化」則是進一步找出最佳排列、最佳組合,遵循給定規則。因為大家推導不出簡潔的數學公式,所以大家只好依賴繁雜的電腦演算法。

大多數情況下,那些給定規則,即是多個元素的兩兩關係,即是圖。因此「組合學」與「圖論」密切相關,「組合最佳化」與「計算圖論」密切相關。組合學發展至今,大家已經默認圖論是組合學的分支。

順帶一提,管理學的分支「作業研究Operations Research」又譯作「運籌學」,即是在探討「組合最佳化」。經典範例是Dijkstra提出的最短路徑問題。

Network Flows: Theory, Algorithms, and Applications
Network Flow Algorithms
Data Structures and Network Algorithms
Graphs, Networks and Algorithms
Digraphs: Theory, Algorithms and Applications
Combinatorial Optimization / Cook et al.
Combinatorial Optimization: Algorithms and Complexity
Combinatorial Optimization: Theory and Algorithms
Scheduling Algorithms
Scheduling: Theory, Algorithms, and Systems

Number Theory / Computational Number Theory

「數論」探討自然數的性質,諸如因數、質數、餘數。

「計算數論」同時使用演算法與數論的知識,橫跨兩個領域。

例如篩法、因數分解就是考慮了時間複雜度所得到的演算法。

另外,在此領域之下,我擅自收錄了組合學、群論、序論的演算法。在數學領域當中,這些領域各自獨立;但是從演算法的觀點,這些領域互相聯繫。

Elementary Number Theory and Its Applications
Algorithmic Number Theory, Volume 1: Efficient Algorithms
Computational Number Theory / Abhijit Das
The Art of Computer Programming, Volume 2: Seminumerical Algorithms
A Computational Introduction to Number Theory and Algebra
Hacker's Delight
Matters Computational: Ideas, Algorithms, Source Code
Introductory Combinatorics
Combinatorics: The Art of Counting
Combinatorial Methods with Computer Applications
Concrete Mathematics: A Foundation for Computer Science

Analytic Number Theory

「解析數論」利用分析來探討數論,諸如級數、生成函數。

另外,在此領域之下,我擅自收錄了計算代數(多項式運算)、訊號處理、碎形與混沌的演算法。在數學領域當中,這些領域各自獨立;但是從演算法的觀點,這些領域互相聯繫。

Steps into Analytic Number Theory: A Problem-Based Introduction
Algorithmes Efficaces en Calcul Formel
Algorithms for Computer Algebra
Modern Computer Algebra
Chaos and Fractals: An Elementary Introduction
Elegant Chaos: Algebraically Simple Chaotic Flow
Elegant Fractals: Automated Generation of Computer Art
https://w2.mat.ucsb.edu/200C/spring_2015/schedule.html
http://www.math.mcgill.ca/jakobson/courses/math480-19-fractals.html

Geometry / Computational Geometry

「幾何」探討點線面、長度角度、形體內外交錯。

「計算幾何」同時使用演算法與幾何的知識,橫跨兩個領域。

例如簡單多邊形(邊不相交)、凸多邊形(邊斜率遞增)就是考慮了時間複雜度所得到的形狀。

Computational Geometry: Algorithms and Applications
Computational Geometry in C
Discrete and Computational Geometry
Computational Geometry: An Introduction
Visibility Algorithms in the Plane

Differential Geometry / Discrete Differential Geometry

「微分幾何」探討連續平滑的表面。

「離散微分幾何」利用微分幾何來探討不連續平滑的表面。

例如網格就是不連續平滑的表面。

本世紀才興起的領域。目前沒有教科書,只有課程講義。

https://mirelab6.wixsite.com/dgpslides
http://school.geometryprocessing.org/
http://www.cs.uu.nl/docs/vakken/ddm/2019-2020/
https://cims.nyu.edu/gcl/teaching.html
https://graphics.stanford.edu/courses/cs468-13-spring/schedule.html
https://cseweb.ucsd.edu/~alchern/teaching/cse274_wi22/
http://ddg.cs.columbia.edu/
http://www.cs.cmu.edu/~kmcrane/
http://wordpress.discretization.de/geometryprocessingandapplicationsws19/2019/10/17/lecture-progress/
http://fernandodegoes.org/
https://graphics.tudelft.nl/Publications-new/2016/VCDPBHB16/
Discrete Differential Geometry: An Applied Introduction
A Short Course in Computational Geometry and Topology
Geometric Folding Algorithms: Linkages, Origami, Polyhedra

Analysis / Numerical Analysis

「分析」探討連續函數的性質,例如測度、泰勒展開。

「數值分析」探討連續函數的演算法,例如方程式求解。

各種工程領域經常使用數值分析。應用最為廣泛!

Numerical Analysis for Engineers: Methods and Applications
Numerical Methods for Engineers / Steven Chapra, Raymond Canale
Numerical Analysis / Timothy Sauer
Numerical Analysis / Richard L. Burden, J. Douglas Faires, Annette M. Burden
Numerical Methods: Design, Analysis, and Computer Implementation of Algorithms
Numerical Algorithms: Methods for Computer Vision, Machine Learning, and Graphics
Numerical Recipes: The Art of Scientific Computing
Algorithms for Optimization
An Introduction to Optimization
Convex Optimization
Introduction to Online Convex Optimization

Linear Algebra / Numerical Linear Algebra

「線性代數」探討線性函數的性質,例如特徵向量、矩陣分解。

「數值線性代數」探討線性函數的演算法,例如線性方程組求解之高斯消去法。

在數學領域當中,線性代數是代數的分支,跟分析無關;但是從演算法的觀點,數值線性代數比較像是數值分析的分支。

計算機科學經常使用數值線性代數。應用相當廣泛!

A First Course in Numerical Methods
Numerical Linear Algebra
Numerical Linear Algebra: An Introduction
Applied Numerical Linear Algebra
Fundamentals of Numerical Computation
Numerical Computation in Science and Engineering
Fundamentals of Matrix Computations
Matrix Computations
Iterative Methods for Sparse Linear Systems
Numerical Methods for Large Eigenvalue Problems
Linear Algebra Notebook
Matrix Analysis and Computations
Matrix Analysis and Applied Linear Algebra
Spectra and Pseudospectra: The Behavior of Nonnormal Matrices and Operators
Operations Research: Applications and Algorithms
Introduction to Mathematical Optimization
Numerical Optimization
Introduction to Linear Optimization
Integer Linear Programming in Computational and Systems Biology: An Entry-Level Text and Course
Advanced Optimization for Process Systems Engineering

Engineering Mathematics

「工程數學」是各種工程領域經常使用的數學主題。工程數學涵蓋的數學主題是大雜燴,源自各種數學領域。當你遇到非常重要的數學主題,又想要通通集中在一門課裡面,那就放在工程數學裡面吧。

工程數學的常見主題:多變量微積分、微分方程、調和分析、動態系統、隨機程序、複變函數。

Engineering Mathematics / Ken Stroud and Dexter Booth 
Advanced Engineering Mathematics / Erwin Kreyszig
Scientific Computing: An Introductory Survey
Spectral Methods in MATLAB
Random Numbers and Computers

Discrete Mathematics

「離散數學」是計算機科學經常使用的數學領域。離散數學如同方才演的那齣。當你遇到非常重要的數學領域,又想要通通集中在一門課裡面,那就放在離散數學裡面吧。

離散數學的常見領域:集合論、序論、邏輯學、自動機理論、代數結構、組合學、機率論、圖論、……。

Discrete Mathematics and Its Applications / Kenneth Rosen

Data Processing

「資料處理」是資料的數學理論和演算法。

資料處理不是主流名稱。當前名稱是「機器學習Machine Learning」。過去名稱是「樣式辨識Pattern Recognition」。

我認為機器學習名不副實,所以我不使用這個名稱。「機器」和「學習」這兩個詞彙缺乏明確意義、缺乏嚴謹定義。

我認為機器學習的發起成員是心理學家和統計學家。他們成天創造新奇詞彙,重新包裝統計學知識,換湯不換藥,譁眾取寵。他們不懂演算法、不懂數值分析,導致那些詞彙不便實作、不便實用。

Learning From Data
Introduction to Machine Learning / Ethem Alpaydin
Machine Learning Fundamentals: A Concise Introduction
Pattern Recognition and Machine Learning
Data Mining: Practical Machine Learning Tools and Techniques
Data Mining and Machine Learning: Fundamental Concepts and Algorithms
Machine Learning: The Art and Science of Algorithms that Make Sense of Data
Machine Learning: A Probabilistic Perspective
Machine Learning / Tom Mitchell
Machine Learning / Zhi-Hua Zhou, Shaowu Liu
Learning From Data: A Short Course
An Introduction to Statistical Learning, with Applications in R
The Elements of Statistical Learning: Data Mining, Inference, and Prediction
Numerical Geometry of Nonrigid Shapes
Computational Optimal Transport

Signal Processing

「訊號處理」是訊號的數學理論和演算法。

起初,訊號處理是電子學的分支,大家利用電子電路處理訊號。後來,計算機科學興起,大家開始利用電腦處理訊號。目前仍以電子電路為大宗。大家經常討論電子電路一方,鮮少討論電腦一方。

訊號處理不是主流名稱。當前名稱是「人工智慧Artificial Intelligence」。過去名稱是「控制理論Control Theory」。

我認為人工智慧名不副實,所以我不使用這個名稱。我認為人工智慧的發起成員是邏輯學家(函數式程式語言),然而目前根本無人使用邏輯學研究人工智慧。

Time Series Analysis: Forecasting and Control
Introduction to Spectral Analysis
Mathematical Control Theory: An Introduction
Mathematical Modeling in Systems Biology: An Introduction
Algorithms for Decision Making
Artificial Intelligence: A Modern Approach

String Processing

「字串處理」是字串的數學理論和演算法。

該領域的學者原本打算稱作「字串論String Theory」,但是恰巧跟物理學的「弦論String Theory」撞名,因而作罷。也有人稱作「字串學Stringology」或「文字演算法Text Algorithm」。

Algorithms on Strings
Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology
Flexible Pattern Matching in Strings: Practical On-Line Search Algorithms for Texts and Biological Sequences
Jewels of Stringology
String Searching Algorithms
125 Problems in Text Algorithms
Compiler Construction Using Java, JavaCC, and Yacc
Compiler Construction: Principles and Practice

Coding Theory

「編碼理論」是二元碼的數學理論和演算法。

壓縮:轉換資料,讓資料容量變小。

過去稱作「信號源編碼Source Coding」。現在稱作「資料壓縮Data Compression」。

Understanding Compression: Data Compression for Modern Developers
Introduction to Data Compression

更正:補充資料,出錯時方便補救。

過去稱作「通道編碼Channel Coding」。現在稱作「錯誤更正碼Error Correcting Code」。

Coding Theory and Cryptography: The Essentials
Coding Theory: Algorithms, Architectures and Applications
Error Correction Coding: Mathematical Methods and Algorithms

加密:轉換資料,讓資料無法閱讀。

現在稱作「密碼學Cryptography」。

Serious Cryptography: A Practical Introduction to Modern Encryption
Pratical Cryptography for Developers
Cryptography Engineering: Design Principles and Practical Applications
A Graduate Course in Applied Cryptography
Introduction to Modern Cryptography
The Joy of Cryptography
Understanding Cryptography: A Textbook for Students and Practitioners
Guide to Elliptic Curve Cryptography
A Pragmatic Introduction to Secure Multi-Party Computation

傳輸:轉換資料,讓資料適合使用電波傳輸。

過去稱作「資料傳輸Data Transmission」。現在稱作「數位通訊Digital Communication」。

Introduction to Wireless and Mobile Systems

Multimedia(Under Construction!)

Media / Multimedia

計算機科學當中,「媒體」就是記載資訊的媒介,諸如文字、聲音、圖片、動畫都是媒體。「多媒體」就是複合多種媒體,例如網頁、影片、電玩都是多媒體。

每一種媒體都有專門的研究領域,分工相當細緻。

Text Processing 文字處理
應用:文字編輯器、輸入法、網路爬蟲

Natural Language Processing 自然語言處理
應用:自動翻譯、自動寫作、搜尋引擎、智慧型輸入法

Speech Processing 語音處理
應用:語音輸入、電腦語音、聲紋辨識

Audio Processing 音訊處理
應用:隨身聽、混音、音效設計、去除通話雜音

Computer Music 電腦音樂
應用:電子樂器、譜曲、網路合奏

Image Processing 影像處理
應用:軟體修圖、相機特效、美術作品

Video Processing 視訊處理
應用:DVD、電視、攝影、Youtube、視訊會議、合成場景

Geometry Processing 幾何處理
應用:模型設計、3D掃描、3D列印

Computer Graphics 電腦繪圖
應用:模型顯示、虛擬實境、電玩遊戲、視覺特效、美術作品

Computer Animation 電腦動畫
應用:好萊塢電影特效、迪士尼卡通動畫、電視廣告、虛擬偶像

Computer Vision 電腦視覺
應用:手寫輸入、自動駕駛、監控系統、生產品管、醫學影像

本站也額外整合了密切相關的領域。

Data Science 資料科學
應用:搜尋引擎、資料庫、商業分析

Network Science 網路科學
應用:社群網路、藥物篩選

Data Visualization 資料視覺化
應用:數據圖表

Computational Acoustics 計算音響學
應用:場館設計、海洋探勘

Color Science 色彩科學
應用:顯示裝置、攝影設備、影像設計、視訊壓縮

Computational Photography 計算攝影
應用:數位相機、太空望遠鏡

Computer Simulation 電腦模擬
應用:工程模擬與分析、環境模擬、電腦動畫

Robotics 機器人學
應用:工業生產製造、自動車、醫療手術、義肢、軍事武器

Computational Neuroscience 計算神經科學
應用:腦機介面、義肢

語音處理不是研究麥克風、耳機,電腦繪圖不是研究螢幕。因為電腦的功能是數學計算,所以上述領域通通都是數學計算!將現實問題對應到數學問題,運用數學計算解決現實問題。

「懂得程式設計」與「懂得數學計算」是兩碼子事,上述這些領域通通是在鑽研後者。大多數民眾喜歡前者,卻完全忽略後者,進而影響了台灣資訊產業的發展方向。

Data Science

「資料科學」從大量資料之中找到資訊。使用了資料處理。

經典話題是啤酒、尿布、星期五。

Mining of Massive Datasets
High-Dimensional Data Analysis with Low-Dimensional Models: Principles, Computation, and Applications
Readings in Database Systems
Search Engines: Information Retrieval in Practice
Designing Data-Intensive Applications
http://www.yisongyue.com/teaching.php
http://www.cs.columbia.edu/~blei/courses.html
https://people.cs.georgetown.edu/jthaler/COSC548.html
http://www.csd.uoc.gr/~hy460/
https://www.csie.ntu.edu.tw/~tonytan/teaching/prev/2015b-adb.html

Network Science

「網路科學」從大量關聯之中找到資訊。使用了計算圖論。

經典話題是六度分隔理論。

A First Course in Network Science
Network Science
Networks
The Nature of Complex Networks
Mining Complex Networks
Modularity and Dynamics on Complex Networks
Evolutionary Dynamics of Complex Communications Networks
A (partially) Interactive Introduction to Systems Sciences
Lectures on Network Systems
Complex Network: An Algorithmic Perspective
Graph Theory and Complex Networks: An Introduction
Graph Spectra for Complex Networks
Random Graphs and Complex Networks, Volume 1
https://slides.com/meng-yingtsai/sna_intro

Natural Language Processing

「自然語言處理」旨在研究人類撰寫的文章。

經典話題是聊天機器人。

Introduction to Natural Language Processing
Foundations of Statistical Natural Language Processing
Mining the Web: Discovering Knowledge from Hypertext Data
Introduction to Information Retrieval
https://stanford-cs324.github.io/winter2022/
https://alvinntnu.github.io/NTNU_ENC2045/

Speech Processing

「語音處理」旨在研究人類訴說的話語。使用了音訊處理、自然語言處理。

經典話題是智慧音箱。

Speech and Language Processing
Theory and Applications of Digital Speech Processing
Spoken Language Processing: A Guide to Theory, Algorithm, and System Development

Audio Processing

「音訊處理」研究聲音特效、聲音設計、聲音檔案、聲音傳輸。

Introduction to Audio Processing
Introduction to Audio Signal Processing
Introduction to Computer Music
Introduction to Computer Music
Introduction to Computer Music
DAFX - Digital Audio Effects
The Audio Programming Book
Spectral Audio Signal Processing
Physical Audio Signal Processing: for Virtual Musical Instruments and Digital
The Physics of Musical Instruments
Physics and Music: The Science of Musical Sound
https://www.coursera.org/learn/audio-signal-processing
http://www.ee.columbia.edu/~dpwe/e4896/outline.html
http://www.cs.cf.ac.uk/Dave/CM0268/PDF/10_CM0268_Audio_FX.pdf
https://ccrma.stanford.edu/~jos/
https://www.ness.music.ed.ac.uk/

Computer Music

「計算機音樂」利用電腦產生音樂、利用電腦模仿樂器。

Fundamentals of Music Processing
An Introduction to Audio Content Analysis
https://pages.mtu.edu/~suits/MusicRefs.html
http://www.music.mcgill.ca/~gary/
http://www.music.mcgill.ca/~ich/
https://twtmir.wordpress.com/
http://www.cs.cmu.edu/~music/cmsip/schedule.html
https://cmc.music.columbia.edu/cmc_courses/regularly-offered
https://www.mcgill.ca/study/2020-2021/faculties/music/graduate/courses/music/graduate?search_api_views_fulltext=MUMT&sort_by=field_subject_code
https://ccrma.stanford.edu/

Image Processing

「圖片處理」或「影像處理」利用電腦修改圖片。

Digital Image Processing
Digital Image Processing: An Algorithmic Introduction
A Computational Introduction to Digital Image Processing
Concise Computer Vision: An Introduction into Theory and Algorithms
Numerical Geometry of Images: Theory, Algorithms, and Applications

Video Processing

「影片處理」或「視訊處理」利用電腦修改影片。

Color Science

「色彩科學」研究色彩與觀感,用於圖片處理與影片處理。

The Science of Color
Color Science: Concepts and Methods, Quantitative Data and Formulae
Color Imaging: Fundamentals and Applications
High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting
Advanced High Dynamic Range Imaging
https://scholar.harvard.edu/files/schwartz/files/lecture17-color.pdf

Computational Photography

「計算攝影學」研究拍攝相片的技巧。無論是手機自拍或是觀星望月,都能派上用場。

http://stanford.edu/class/ee367/
http://cs.brown.edu/courses/csci1290/
http://franchomelendez.com/index.php/computational-photography/
http://www.computationalimaging.org/research-overview/
https://www.davidsalomon.name/PhotoBook/PhoAd.html

Geometry Processing

「幾何處理」研究三維模型。無論是卡通動畫或是工業生產,都能派上用場。

Polygon Mesh Processing
A Sampler of Useful Computational Tools for Applied Geometry, Computer Graphics, and Image Processing
Guide to Computational Geometry Processing: Foundations, Algorithms, and Methods
Shape Interrogation for Computer Aided Design and Manufacturing
Functional and Shape Data Analysis
https://github.com/danielepanozzo/gp
https://www.coursera.org/learn/interactive-computer-graphics
https://haosulab.github.io/ml-meets-geometry/WI22/schedule.html
http://homes.cs.washington.edu/~seitz/talks/3Dhistory.pdf
http://graphics.csie.ntu.edu.tw/~robin/courses/gm13/
http://www.banterle.com/francesco/

Computer Simulation

「計算機模擬」用電腦模擬真實世界。無論是電影特效或是氣象預報,都能派上用場。

Physics for JavaScript Games, Animation, and Simulations
Foundations of Physically Based Modeling & Animation
Physics-Based Animation
http://graphics.stanford.edu/courses/cs348c/
http://graphics.stanford.edu/courses/cs448z/
http://www.cs.cmu.edu/~scoros/cs15467-s16/index.html
http://www.cs.cmu.edu/~scoros/cs15869-s15/index.html
https://github.com/Housz/GraphicsSimulation

剛體模擬Rigid Body Simulation:針對不會變形的物體。

Game Physics
Game Physics Engine Development: How to Build a Robust Commercial-Grade Physics Engine for your Game
Real-Time Collision Detection
Physics-Based Animation
Geometric Numerical Integration: Structure-Preserving Algorithms for Ordinary Differential Equations

柔體模擬Soft Body Simulation:針對會變形的物體。

The Linearized Theory of Elasticity
Continuum Mechanics Theory

流體模擬Fluid Simulation:針對液體、氣體。

Fluid Engine Development
Fluid Simulation for Computer Graphics
Fluid Simulation for Video Games
Numerical Simulation in Fluid Dynamics: A Practical Introduction
Computational Techniques for Fluid Dynamics 1: Fundamental and General Techniques
Computational Techniques for Fluid Dynamics 2: Specific Techniques for Different Flow Categories
Fluid Dynamics: Theory, Computation, and Numerical Simulation

Computer Graphics

「計算機圖學」用電腦繪製三維模型。想要在電腦螢幕呈現三維模型,必須經過一連串計算。

Fundamentals of Computer Graphics
Ray Tracing from the Ground Up
3D Graphics for Game Programming
The Ray Tracer Challenge
Ray Tracing in One Weekend
Scratchapixel
Real-Time Rendering
Physically Based Rendering
http://cs248.stanford.edu/winter20/
https://dritchie.github.io/csci2240/
https://sites.cs.ucsb.edu/~lingqi/
https://www.csie.ntu.edu.tw/~cyy/courses/rendering/
https://zhuanlan.zhihu.com/p/444931303

Computer Animation

「電腦動畫」用電腦繪製各種東西,並且讓它們動起來。想要在電腦螢幕呈現各種東西,必須經過一連串計算。

Computer Animation: Algorithms and Techniques
The Art of 3D: Computer Animation and Effects

Computer Vision

「計算機視覺」。

Computer Vision: A Modern Approach
Computer Vision: Algorithms and Applications
Computer Vision for Visual Effects
Computer Vision: Models, Learning, and Inference
Computer Vision: Principles, Algorithms, Applications, Learning
An Invitation to 3D Vision: A Tutorial for Everyone
An Invitation to 3-D Vision: From Images to Geometric Models
Multiple View Geometry in Computer Vision
https://www.csie.ntu.edu.tw/~cyy/courses/vfx/current/
https://people.eecs.berkeley.edu/~efros/
http://kevinkaixu.net/

Display System

我還沒想到標題怎麼下。

光場相機Light Field Camera:

https://cs184.eecs.berkeley.edu/
https://www2.eecs.berkeley.edu/Pubs/Faculty/yirenng.html
https://abhishekkar.info/
https://bmild.github.io/llff/

Robotics

「機器人學」。

Robotics, Vision and Control: Fundamental Algorithms in MATLAB®
Introduction to Autonomous Mobile Robots
Principles of Robot Motion: Theory, Algorithms, and Implementations
Modern Robotics
State Estimation for Robotics
Probabilistic Robotics

Typesetting

Typesetting

Several non-builtin fonts are used for improving readability:

Cascadia Code is for presenting the equations and codes.

Fira Code is the fallback font for the missing characters in the previous font.

⎧ S₁ ∪ … ∪ Sₙ = S
⎨ Sᵢ ∩ Sⱼ = ∅     ∀ 1 ≤ i < j ≤ n
⎩ lᵢ ≤ |Sᵢ| ≤ uᵢ

Unicode Characters for Math

眾所皆知,程式設計使用等寬字體。本站打算繼承這種精神。

想在網頁呈現美觀的數學式子,大家習慣使用MathJax。然而本站並未採用MathJax,而是直接使用純文字。MathJax無法做到等寬排版,而純文字卻可以做到等寬排版(使用等寬字體即可)。

很幸運的,Unicode已經定義大量的數學符號,我們可以直接使用這些數學符號。很不幸的,支援所有數學符號的等寬字體尚未出世,支援所有數學符號的網頁瀏覽器尚未出世,我們只能看到排版醜陋的數學式子。

如果你在本站看到偏移變形的數學符號,不要怨我。當今世界的科技進度就是這樣,我已盡力而為。

運算符號
https://en.wikipedia.org/wiki/List_of_mathematical_symbols

英文字母變體、希臘字母變體
https://en.wikipedia.org/wiki/Mathematical_Alphanumeric_Symbols

上標、下標
https://en.wikipedia.org/wiki/Unicode_subscripts_and_superscripts

附加符號:bar、hat、向量、牛頓微分
https://en.wikipedia.org/wiki/Combining_character

跨行符號:矩陣外框、聯立括號、積分、求和
https://www.fileformat.info/info/unicode/block/miscellaneous_technical/list.htm

表格框線
https://en.wikipedia.org/wiki/Box-drawing_character

總表
https://en.wikipedia.org/wiki/Mathematical_operators_and_symbols_in_Unicode

Donation

Donation

I am not being hired and I have no income. I wish billionaires provide at least TW$25,250 per month as my salary. Please email to algorithm.notes@gmail.com.

我的收入來源是統一發票和五倍卷。不過不必麻煩大家勞師動眾小額捐款,我等有錢人贊助就好了。希望月薪至少有25250元。請來信algorithm.notes@gmail.com

Details

以前曾經開放小額捐款,不過成效不彰,無法維持生計。

[Post Account] (TWD)
20140427 簡立峯    	10,000
20150501 chiaminhsu	 2,000
20150521 chiaminhsu	 2,000
20150704 chiaminhsu	 3,000
20150805 chiaminhsu	 3,000
20150901 chiaminhsu	 2,000
20150902 楊偉成    	 5,000
20150927 chiaminhsu	 3,000
20151105 chiaminhsu	 3,000
20151206 chiaminhsu	 3,000
20151226 chiaminhsu	 4,900
20160130 chiaminhsu	 3,000
20160202 chiaminhsu	 5,000
20160304 chiaminhsu	 3,000
20160320 chiaminhsu	21,000
20160701 許景琳    	 1,500
20160705 chiaminhsu	21,000
20160801 許景琳    	 1,500
20160901 許景琳    	 1,500
20161001 許景琳    	 1,500
20161003 chiaminhsu	21,000
20161101 許景琳    	 1,500
20161201 許景琳    	 1,500
20170101 許景琳    	 1,500
20170106 chiaminhsu	 5,000
20170201 許景琳    	 1,500
20170203 楊皓霖    	   280
20170301 許景琳    	 1,500
20170401 許景琳    	 1,500
20170501 許景琳    	 1,500
20170601 許景琳    	 1,500
20170701 許景琳    	 1,500
20170714 陳祜琦    	 2,000
20170801 許景琳    	 1,500
20170901 許景琳    	 1,500
20170905 吳沂衡    	 1,000
20171001 許景琳    	 1,500
20171101 許景琳    	 1,500
20171201 許景琳    	 1,500
20171229 Mark Chang	 1,500
20180101 許景琳    	 1,500
20180201 許景琳    	 1,500
20180201 Mark Chang	 1,500
20180301 許景琳    	 1,500
20180307 Mark Chang	 1,500
20180401 許景琳    	 1,500
20180410 Mark Chang	 1,500
20180501 許景琳    	 1,500
20180519 Mark Chang	 1,500
20180601 許景琳    	 1,500
20180701 Mark Chang	 1,500
20180801 Mark Chang	 1,500
20180904 Mark Chang	 1,500
20181001 Mark Chang	 1,500
20181008 許景琳    	 6,000
20181101 Mark Chang	 1,500
20181101 許景琳    	 1,500
20181201 Mark Chang	 1,500
20181201 許景琳    	 1,500
20190101 許景琳    	 1,500
20190201 許景琳    	 1,500
20190201 黃基雲    	   250
20190301 許景琳    	 1,500
20190401 許景琳    	 1,500
20190501 許景琳    	 1,500
20220201 許景琳    	 2,000
20220301 許景琳    	 2,000
20220401 許景琳    	 2,000
20220501 許景琳    	 2,000
20220601 許景琳    	 2,000
20220701 許景琳    	 2,000
20220801 許景琳    	 2,000
20220901 許景琳    	 2,000
20221001 許景琳    	 2,000
20221101 許景琳    	 2,000
20221201 許景琳    	 2,000
[PayPal] (USD)
20131129 張嘉文            	  20  -1.08   18.92
20131217 吳俞震            	  10  -0.69    9.31
20140224 蔣承毅            	 100  -4.20   95.80
20140416 蔣承毅            	 100  -4.20   95.80
20140312 倪建群            	  10  -0.74    9.26 (20140425 refund)
20140312 林智偉            	   5  -0.50    4.50 (20140425 refund)
20140402 The Daily Paul    	  20  -1.18   18.82 (20140425 refund)
20140411 洪沛淵            	 100  -4.20   95.80 (20140425 refund)
20140414 郝柏翔            	  12  -0.77   11.23 (20140425 refund)
20140415 林高遠            	   7  -0.57    6.43 (20140425 refund)
20140415 王聲蓁            	  50  -2.25   47.75 (20140425 refund)
20140415 孔令傑            	2000 -78.30 1921.70 (20140416 refund)
20140416 沈佳玟            	  10  -0.69    9.31 (20140425 refund)
20140416 陳國軍            	 100  -4.20   95.80 (20140425 refund)
20140416 Huang Hsiang Cheng	 200  -9.10  190.90 (20140508 refund)
20140508 Huang Hsiang Cheng	 200   0.00  200.00 (20140508 refund)
20160202 林詩堯            	 200  -9.10  190.90
20160302 林詩堯            	 200      0  200.00
20160403 林詩堯            	 200      0  200.00
20160503 林詩堯            	 200      0  200.00
20160603 林詩堯            	 200      0  200.00
20160703 林詩堯            	 200      0  200.00
20160805 林詩堯            	 200      0  200.00
20160904 林詩堯            	 200      0  200.00
20161003 林詩堯            	 200      0  200.00
20161202 劉松晏            	 150  -6.90  143.10
20171115 劉松晏            	 150  -6.90  143.10
20181122 劉松晏            	 150  -6.90  143.10
20190126 Liyiming Ke   	(TWD)298      0  298    (20190128 refund)
20191214 劉松晏            	 150  -6.90  143.10