Category Archive for 'Mr. Thursday'

Posted By Mr. Thursday
不知道各位是否有接聽電話插撥 (call waiting) 的經驗? 我們會先把第一個接聽的人先暫時停著,然後接聽新打來的電話。不知道目前插撥最多能接聽多少通電話?假設依照這個方法一直接聽新的插撥電話,就會一直把上一通電話暫時儲存,等新接通的電話結束後,再回復上一通、上上一通、一直到第一通接聽的電話。
堆疊 (Stack) 就是類似的資料結構。「堆疊」有兩個方法 (method) 可以呼叫:推進 (push) 和 彈出 (pop)。透過這兩個方法的使用,我們可以達到讓資料「先進後出」的效果 (LIFO: Last In First Out)。甚麼是先進後出呢?讓我們再舉一個例子:搭電梯。當我們搭電梯的時候,通常最先進電梯的會擠在後面,後進電梯的比較靠近門口。如果都是同一層離開電梯,剛才比較慢近來電梯的人,反而是比較早離開電梯的人,這就是「先進後出」(LIFO) 的效果了。
再回到剛才接聽插撥電話的例子,正好就是先進後出的例子!最後插撥的先結束對話,最早打來的最慢結束對話。接下來讓我們看看,堆疊實際運作的情形,會向下面這一張動畫所顯示的:
 

Read Full Post »

Posted By Mr. Thursday
在〈二元樹在排序的應用〉裡面,我們提到了演算法就是完成一件事情的步驟,資料結構則是和演算法搭配,讓步驟有運作的東西,像是刮鬍刀的步驟,會運作在刮鬍刀或是插頭上面。「樹」(tree) 是一種資料結構,有樹根樹枝,看起來像是倒立的一棵樹。二元數則是每個節點只有兩個分支的樹。此外,我們可以用二元樹這個資料結構,完成「排序」(sorting) 的演算法。下面是一段各種排序演算法的影片:
 
除了排序以外,今天要和各位介紹,當我們把資料用一棵樹排序之後,要如何進行搜尋?排序或是沒有排序,對搜尋的效率有甚麼樣子的影響?我們先看看下面這兩張圖,左邊是排序過程,右邊是搜尋過程的動畫:

Read Full Post »

Posted By Mr. Thursday
不知道各位是否觀賞過立體電影?除了立體電影,現在也開始有立體相片的技術。由史丹佛大學 Andrew Ng 教授和他的博士班學生 Ashutosh Saxena 最近開發了一個技術,可以把照片的風景,經過演算法的處理,轉換成具有立體感的照片,同時可以在 FLASH裡面使用鍵盤來調整各種觀賞角度。下面例子是一張羅馬著名噴水池景點的照片,網址。鍵盤上下左右可以移動觀賞角度,+/-可以調整遠近距離。shift加上上下左右可以平移觀賞位置。
 網頁畫面如下:
 

Read Full Post »

Posted By Mr. Thursday
在〈由樹的前序、中序、後序走法來談資料結構〉文章裡面提到了演算法就像是做事情的方法,資料結構則是對應演算法可以運作的東西,譬如說刮鬍子有步驟一、步驟二、步驟三,但是要有刮鬍刀、插頭、以及鬍鬚,那些步驟才有運作的東西,甚至不同的刮鬍刀,也會讓同樣的步驟有不同的執行效率,或是連原來的步驟都要改變,譬如說不是電動刮鬍刀,原來步驟裡面插插頭的那一步,也就可以不用作了。演算法和資料結構之間的關係也是如此,譬如說排序的演算法,可以用不同的資料結構來實現,好的資料結構,可能某一種排序演算法最適合,對其他種排序演算法,可能反而讓速度變慢。
因此,演算法和資料結構,通常會一起考慮,而演算法每一步,也就是電腦可以實現的基本步驟所組成。譬如說兩個數字相加,或是把「樹」這個資料結構裡面的節點根據某種規則移動,都是電腦運算基本步驟所可以達成的。但是如果步驟是「改善排序的品質」的敘述,電腦可能就看不懂了,這時候就是程式設計師,把這些人看的懂的需求,轉換成電腦可以實現的步驟,也就是演算法和對應的資料結構,最後再用程式 (編程) (program),變成電腦真的可以執行的語言,達到最初想要執行的功能。那麼今天想要完成的功能是甚麼呢?「排序」,排序就是把原本雜亂無章的一堆東西,按照某種順序排好,譬如說圖書館裡面的書籍,按照書籍的編號有小到大排好,譬如說醫院的病歷,按照病歷號碼有小到大排好,譬如說一堆檔案,按照字母順序或是檔案時間順序有早到晚排好,這些都是排序的應用。那麼電腦要如何完成「排序」(sort) 這件工作呢?「二元樹」 (binary tree) 怎樣子應用在排序這項工作呢?

Read Full Post »

Posted by Mr. Thursday
Read Write Web提到了一個問答系統 eeggi,使用者可以在上面用自然語言問句,來尋找答案,有興趣的讀者可以在這邊觀看約4分鐘的DEMO。eeggi可以區分同義字,並且根據問句的上下文來判斷回傳的答案,並且會把語意上真正相關的結果整理在一起回傳。文章中還提到了eeggi會依照發現的繼承關係,自動套用相關的屬性,譬如說Mary是一位女孩,那麼女孩相關的屬性就會自動列入搜尋範圍。不過這卻也讓我想到了算是人工智慧裡面一個知識表達還算有名的問題。
這個問題是甚麼呢?首先我們先提一下古老以前亞里斯多德提出了一種邏輯推論法,叫做三段式論證。三段式論證舉個例子如下:
1. 人都會死 (Men are mortal.)
2. 拿破崙是個人 (Napoleon is a man.)
3. 所以拿破崙會死 (Napoleon is mortal.)
不知道各位是否看出三段式論證的規則了呢?就是第一行先論述一整個類別的性質,地行行列出某個事物屬於這個類別,第三行就是結論,也就是這個事物具有第一行類別提到的性質,或是說這個事物繼承了這個性質。
不過後來研究人工智慧的學者,喜孜孜地想要應用到知識表達的邏輯系統裡面的時候,卻發現有個反例,舉例如下:

Read Full Post »

Posted By Mr. Thursday
Googlet 總裁 Eric Schmidt上週在 HIMSS 會議 (Healthcate Information and Management System Society) 發表演講,說明並且展示還未上線的 Google Health 系統。這個系統主要有四個特點:(1) 隱私權和安全性 - 個人健康資料需要隱私權的保護。(2) 平台 - 使用者可以在這個平台上面存取自己的健康資料,並且在這個平台使用其他相關的健康服務工具。(3) 資料可攜性 - 透過網路的存取方式,無論身處何處,無論哪一種作業系統,都可以透過網路存取自己的健康資料,有如ATM可以存取不同間銀行的帳戶一樣。(4) 使用者中心 - 提供更親切更容易使用的系統介面給使用者。下面是目前Google公佈的Screen Shot

除了隱私權問題之外,我個人還想到兩個地方,會是需要探討的問題。

Read Full Post »

Posted By Mr. Thursday
 
由於數位內容和軟體複製容易,讓數位內容和軟體產業無法像實體產品的產業一樣,直接向消費者收費,新的商業模式 (business model) 急待發明!然而在發明新的商業模式之前,讓我們先看看目前既有的數位內容和軟體產業的商業模式,也就是「廣告」。如果用之前分析這個問題的方式,把物品和金錢的交易,分別用藍色和黃色的箭頭表示,那麼廣告的商業模式,就可以用上面這一張圖來表示了。
 

Read Full Post »

Posted By Mr. Thursday
如果想要用另外一種語言在電腦上打字,我們通常要學習另外一種輸入法,即使是同一種語言也有不同的輸入法可以選擇。繁體中文常用的注音輸入法,只要會唸某個字,就可以把字打出來,不過出現同音字的時候需要選字,使用久了有可能會忘記一個字怎麼寫。倉頡輸入法是根據字的形狀拆解成不同字根,讓同字根的字減少,加快打字的速度,然而學習字根的過程需要比較多的練習。無蝦米輸入法也是字根,然而比倉頡容易聯想,學習比較快。
因此除了拼音文字以外,中文輸入法,不管是依照字型拆解,還是各種拼音輸入法 (漢語拼音、注音符號),對於一開始學習的人來說,練習是加快速度最好的方式。然而師父領進門,修行在個人。即使有專門輸入法教學班、教學軟體,「練習」仍舊是把輸入法學習好的關鍵。本篇試著構想一個提供輸入法練習環境的網站,以及這個網站在商業模式、教學上的優缺點分析。

Read Full Post »

Posted By Mr. Thursday
去年在MIT Technology Review網站上面看到Powerlabs網站,不過後來才開始接受註冊。Powerlabs 會搜尋Wikipedia的內容,並且支援自然語言的搜尋,而非目前常用的關鍵字搜尋。使用者還可以透過回應 (feedback) 來改善搜尋的內容和過程。如果想要嚐鮮使用,可以先在這邊註冊。IE目前只支援IE7,另外還支援Firefox和Opera等瀏覽器。MIT Technology Review報導裡面提到這是PARC研究機構30年的研究成果,主要是在一個稱為Lexical Functional Grammer上面的技術,讓文法引擎可以從文字裡面捕捉出要表示出來的語意。

下面是Powerlabs自我介紹一分鐘的影片
 
參考資料

(MIT Technology Review) Building a Better Search Engine 
(Wikipedia) Lexical Functional Grammer
Powerlabs
PARC

Read Full Post »

Posted By Mr. Thursday
在學習英文的時候,有不同的部分需要學習,有聽、說、讀、寫,有文法,有單字,有句子。有時候我們把單字背起來,但是使用上可能無法非常適切,因為我們使用英文的頻率,以及週遭的環境,沒有辦法讓我們全天候暴露在英語的學習環境下面。因此即使偶而有 long time no see (好久不見) 這種一一對應的英文句子,有時候我們常常用錯單字,或是寫出來的句子外國人很少有這種寫法 (people mountain people sea: 人山人海),即便文法上這個句子是對的。在追求國際化的過程中,英語是目前最普及的世界語言,因此本篇以英文句子網站為出發點,嚐試一些分析,並且探討更多可能性,譬如說多國語言的句子學習網站等等。

Read Full Post »

頁次 4 of 9«123456789»