原创 從0開始用javascript和HTML5的canvas編寫光線追蹤渲染器

序 題目寫的比較吸引眼球,實際上這個光線追蹤渲染器十分簡陋,只能渲染最簡單的幾何體----球體,效果也很簡陋。但是十分簡單,核心代碼只有200-300行。很適合初學者學習計算機圖形學的一些基本概念。  以下我會通過介紹一些基本算法,逐步構

原创 RandomAttack algorithm

有通信鏈路故障的同步完全圖網絡下,進程一致性算法 問題形式化描述: 有n個進程,每個進程可以選擇(0,1)中的某個值,要求這些進程做決定前滿足 一致性(每個進程的最終結果要相同)有效性:如果所有進程都從0開始,那麼0就是唯一可能的決定值

原创 poj_1014

題目大意: 每個糖果的價值都是1,2,3,4,5,6 這六種之一。現在有一堆糖,需要判別是否能夠把糖果分成兩堆,兩堆的價值相同。 分析:         爲了接下來敘述順暢,我把題目做以下等價變換: 每個糖果的重量都是1,2,3,4,5

原创 AC自動機原理說明

1. AC自動機的功能: 用於多模匹配,所謂多模匹配,就是給定一個帶匹配的字符串string,給定一個字典dictionary,dictionary中有多個字符串{ str1,str2, str3 … } 多模匹配就是要得到string字

原创 poj_1088 滑雪 動態規劃(蓋澆飯算法)

題目 Michael喜歡滑雪百這並不奇怪, 因爲滑雪的確很刺激。可是爲了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待升降機來載你。Michael想知道載一個區域中最長底滑坡。區域由一個二維數組給 出。數組

原创 從0開始用javascript和HTML5的canvas編寫光線追蹤渲染器<二>

局部光照模型簡介: 在上一節,介紹了光線追蹤算法的基本框架,裏面提到了兩個新的概念,其中一個是局部光照模型(phong模型),另一個是光線投射算法。光線投射算法我會在下一節介紹,本節主要介紹什麼是phong局部光照模型。 局部光照模型,

原创 poj_1062

題幹: 年輕的探險家來到了一個印第安部落裏。在那裏他和酋長的女兒相愛了,於是便向酋長去求親。酋長要他用10000個金幣作爲聘禮才答應把女兒嫁給他。探險家拿不出這麼多金幣,便請求酋長降低要求。酋長說:"嗯,如果你能夠替我弄到大祭司的皮襖,

原创 從0開始用javascript和HTML5的canvas編寫光線追蹤渲染器<一>

序 題目寫的比較吸引眼球,實際上這個光線追蹤渲染器十分簡陋,只能渲染最簡單的幾何體----球體,效果也很簡陋。但是十分簡單,核心代碼只有200-300行。很適合初學者學習計算機圖形學的一些基本概念。  以下我會通過介紹一些基本算法,逐步構

原创 poj-2186 受歡迎的奶牛(tarjan算法應用)

題意:有n只奶牛,奶牛之間有傾慕的關係,並且傾慕關係是可以傳遞的。要求找出某幾個奶牛,這幾個奶牛被所有的奶牛喜歡。 奶牛的關係抽象成爲有向圖,a喜歡b表示爲a點到b點有一條有向邊。 思路: 1 通過tarjan算法,求出強連通分量,並

原创 分佈式算法 3 最大獨立集

獨立集就是指: 圖G=(V,E)中,I是G中的一個子集,如果I中任意兩個點之間不存在e屬於E,則I就是獨立集。 如果無法加入G中的任意一個點使得I依然保持獨立集,那麼I就是最大獨立集。(最大獨立集並不要求其中包含的點要最多,也就是說一個圖

原创 poj_1020 anniversary cake

求給定的n(1<=n<=16)個正整數邊長的小正方形(每個邊長<=10)能否恰好無重疊拼成一個邊長爲s的大正方形。 思路和方法:這道題不可以用貪心算法,有特殊的情況會覆蓋不到。 思路:類似於歐羅斯方塊,每次選一個方塊放到最低點。 數據結構

原创 搜索算法總結

搜索算法廣泛應用於人工智能領域,但是由於時間複雜度是指數級別,計算機科學家在樸素的搜索算法(廣度優先,深度優先搜索)上優化得到了一系列搜索算法   本文介紹的搜索算法主要指:廣度優先搜索,深度優先搜索,以及在此基礎上優化得來的 A*算法,

原创 poj-3253哈夫曼樹

題目的意思是。要把一塊木板切成所需要的n塊,但是每切一刀需要收費。收費的方法是(網上有一些人理解有誤): 每當在一塊木板上動刀子,這塊木板的原有長度代表了這刀的費用。 思路: 切割的過程可以用一棵二叉樹表示,每個節點有兩個或者沒有子節點

原创 分佈式算法 2 領導者選擇算法

算法產生於局部令牌環網: 當令牌在環網中丟失,需要重新產生一個令牌,這就相當於產生一個領導者。這個領導者要求唯一。 定理: 如果每一個進程都相同,則無法選舉出唯一領導者。(如果每個進程都相同,則在同步系統運行中,每個進程發出的消息,接收

原创 揹包問題總結

0-1揹包問題 給定N種物品和一個揹包,第i個物品的價值爲vi,重量爲wi,每個物品只能選擇放入揹包或者不放入揹包,揹包承重爲c,求使得揹包中物品價值最大的放法。 解法:動態規劃 定義狀態:c[i][m]表示考慮第i件物品( 1<=i<=