原创 CSAPP學習筆記第9章:

每一個進程需要屬於自己的程序代碼和變量,但是如果進程太多那麼需要的內存也太多,可能導致一些進程沒有辦法運行。當一個程序沒有空間可用的時候,它可能會寫到別的進程的存儲器裏面,這樣會帶來很難理解的錯誤! 爲了方便管理存儲器(內存),操

原创 AdaBoost算法的單機實現

AI課上的作業,我用python實現一下 實現的目標如下: 首先簡單介紹一下Adaboost算法,也叫做自增強適應。用來將多個弱的分類器/預測器變成一個比較強的分類器。具體算法如下: [0]弱分類器我只實現了簡單的二分類,然後

原创 CSAPP第十二章讀書筆記

這一章講了並行的三種機制: [1]基於進程的並行: [2]基於I/O多路複用的並行: 基本思路是使用select函數,使得內核掛起進程,只有某一個I/O或者多個I/O事件發生之後,纔會將內核返回給應用程序。 [3]基於線程的並

原创 Python Challenge 0-9

這是一個神奇的網站…. 現在卡在第七題還沒有做出來。。。 (0) :較簡單,首先嚐試了238發現不對,然後嘗試2^38次方即可成功跳轉url. (1) :題目是這樣: 很容易想到將每個字母往後推2個,然後將下面哪一句話轉換一下即

原创 Csapp讀書筆記:第五章

(1) 安全優化,編譯器在進行優化的時候必須考慮所有的情況,只執行安全的優化。所以可能會限制很多可能的優化策略。 如果寫出上面這樣的代碼,當xp==yp的時候,最後的結果等於0。否則xp和yp指向的對象進行了一次交換。由於有兩種

原创 刪除子序列問題

給定一個序列,要求從裏面刪除一個連續的子序列,使得剩下的序列裏含有一個最長的連續遞增子序列。 這個題目有O(nlogn)的解法,但是比較複雜,我也沒有研究清楚,就先說O(n^2)的算法吧: 最容易想到的是枚舉算法(i,j),然後檢

原创 CSAPP讀書筆記第六章(優化cache命中率)

(1)局部性: 程序具有時間局部性和空間局部性.時間局部性是指當前用的存儲器位置可能在不久的將來被用到,會被放入告訴緩存。空間局部性則是指一個存儲器位置被用到,那麼相鄰的幾個位置在不久的將來也可能被用到,也會被放入告訴緩存! 根據

原创 CSAPP讀書筆記第七章:(變量作用域與鏈接器)

[1]程序經過預處理和編譯之後變成可重定位目標文件。每一個可重定位目標文件都有一個表,這個表含有當前文件定義的變量(函數),引用的函數。 這些變量有幾種類型:(1)當前模塊定義的全局變量(非static)(2)當前模塊定義全局變量

原创 Uva1609:Boring的序列(有相當難度的好題!)

這道題的意思是:給定一個序列,如果任意子序列裏面都有至少一個不重複的元素(不重複是隻在子序列裏面是唯一的),那麼我們就叫這個序列是不無聊的。我們需要檢測一個序列是否滿足這種性質。 這道題首先是有O(n^2)的解法的,枚舉任意子區間

原创 將整數數組進行m等分,使得每一個部分的和相等且m最大

我對這個問題的解法是遞歸着解決的,首先對原始數組進行排序,然後我們首先選擇m的大小,注意這裏題目沒有說明是否是正整數,如果是:那麼最大的m一定小於(數組的和)/(數組最大的元素),否則就要從數組的元素個數開始枚舉: 假設sum是數

原创 CPS變換的簡單理解

CPS變換又叫做continuation Passing Style,它是一種編程風格,用來將內部要執行的邏輯封裝到一個閉包裏面,然後再返回給調用者,這就將它的程序流程顯式的暴露給了程序員,讓我們可以控制它。 我們先看一個cps變

原创 猜測多項式

在知乎上看到這樣一個問題,非常有趣,記錄下來: 假設現在有一個黑盒子,裏面有一個多項式,每一個多項式都是正整數,我們每次往這個黑盒子裏面輸入一個正整數x,它就會返回一個帶入x的結果,那麼請問輸入幾次可以得到所有多項式係數呢? 開始

原创 Python建立簡易語音識別系統

將AI課上學習的知識進行簡單的整理,可以識別簡單的0-9的單個語音。基本方法就是利用庫函數提取mfcc,然後計算誤差矩陣,再利用動態規劃計算累積矩陣。並且限制了匹配路徑的範圍。具體的技術網上很多,不再細談。 現有缺點就是輸入的語音

原创 Maigc Cubes:2017 Works Application筆試

給定一個M*M*M的魔方,和N個小魔方,將每一個小魔方融合到大魔方里(小魔方的大小不確定,但是一定小於大魔方),融合的部位將將加起來再對P取餘,要求最後的結果一定是全部爲0。求出所有小魔方的位置。 思路如下,這個題目似乎沒有找到巧

原创 最大公約數和快速gcd

最大公約數有兩種基本的求法:(1)輾轉相除法(2)更相減損法,首先來證明一下: (1)證明gcd(a,b)=gcd(b,a 假設a=k1m,b=k2m,a=sb+r 可以知道r=a−sb=(k1−sk2)m,所以m是(b,r)的公