基礎電腦科學:排序(sorting)演算法入門上

前言排序(sorting)和搜尋(search)是演算法(algorithm)中最常見的入門知識。雖然我們在一般程式開發的場合中較少會需要自己實作排序和搜尋演算法,但排序(sort)和搜尋(search)的觀念也常出現在其他的演算法當中,應用層面很廣。本系列文章將使用 Python 來實作幾個經典演算法。首先我們先來介紹:選擇排序、插入排序和氣泡排序法。 選擇排序法選擇排序法是一種十分直觀的排序演算法(就是選擇最小的值和第一個初始值互

Read More...

基礎電腦科學:演算法概要

前言隨著資訊科技發展,演算法已經無所不在存在我們的生活當中。舉凡上網 google 搜尋資料、下載檔案的壓縮方法、檔案的加密傳輸等,都可以看到演算法運作的蹤跡。一般來說資料結構和演算法是程式設計最基本的內涵,所以有人說:程式設計 = 資料結構 + 演算法。那究竟什麼是演算法/算法呢? 咱們維基百科給了個非常需要慧根才能理解的解釋: 演算法(algorithm),在數學(算學)和電腦科學之中,為任何良定義的具體計算步驟的一個序列,常用

Read More...

Shingling, MinHashing and Common distance measure I

誰適合閱讀這篇文章:熟悉 Hash, Set, Tries (Prefix and Suffix Tree) 等資料結構和有志從事大量資料分析的電腦工程師 主要解決問題:給定一份文件,如何在網際網路的無盡文件大海中,找到相似的文件?主要應用:偵測剽竊 (Plagiarism),搜尋引擎欲尋找鏡像網頁,網路購物或電影推薦系統中的協同過濾 綱要: 如何快速比較兩文件集合並提供量化結果: a. 如何定義相似度? b. 如何重新定義相似度

Read More...