原创 docker簡介、安裝、使用

1     簡介 docker官方網站,https://www.docker.com docker文檔的官方網站 ,https://docs.docker.com,有時候比較慢,請使用以下內網訪問。 docker文檔的官方鏡像docs/a

原创 最長公共子序列(nlogn)

最長公共子序列(LCS)最常見的算法是時間複雜度爲O(n^2)的動態規劃(DP)算法,但在James W. Hunt和Thomas G. Szymansky 的論文"A Fast Algorithm for Computing Longe

原创 職業、人生的動態規劃?

曾幾何時,幻想過可以從事多個職業,可到如今單個職業也已經很不容易了。但人的天性如此,職業病就是其一,人就是喜歡從事各種活動   做專業運動的,身體運動過度導致生病; 不運動的,身體很少鍛鍊導致生病;   老師由於過度站立導致下肢生病; 坐

原创 單調隊列之廣告印刷問題

問題:有n幢建築,其高度分別爲H1,...,Hn,其寬度爲1,且這些建築緊靠在一起,當前需要在這些建築上刷一個非常大的矩形廣告,求矩形廣告的最大值。   先翻譯成數學題,給定n個正數的序列,定義區間值A(i,j)= Min(Hi,Hi+1

原创 算法導論22.5-7 給出一個算法確定一個有向圖是否爲半連通

半連通的定義,有向圖G(V,E),任意兩個不同的點u、v,u有一條路徑可達v或者v有一條路徑可達u,從定義中可以看出,強連通圖一定是半連通的。 引理:有向無環圖G(V,E),G是半連通的當且僅當有一條路徑,這條路徑上有圖G中所有點。 證

原创 歐拉回路問題(算法導論22.2-8 和22-3)

22.3 歐拉回路的算法來自1873年的Hierholzer,前提是假設圖G存在歐拉回路,即有向圖任意點的出度和入度相同。從任意一個起始點v開始遍歷,直到再次到達點v,即尋找一個環,這會保證一定可以到達點v,因爲遍歷到任意一個點u,由於其

原创 n個點的簡單無向圖沒有長度爲3的環,求其最大的邊數

原題描述:在一個未來的空中都市中,有很多個小島(城區)。現在要求在這些島之間架一些橋樑(橋是架在兩個島中間的)。要求:首先,如果A與B中間有橋,B與C之間有橋,則A與C之間就不能再架橋了,即對於城市中的任意三個島,不能在其中兩兩都架上橋。

原创 兩次BFS求樹的直徑(算法導論22.2-7)

以任意點w開始,先做一次BFS,找到最遠的點v,然後再以此點v進行一次BFS,找到最遠的點爲u,u到v就是樹的直徑。   此問題的關鍵不是在編程,而是要證明,網上也找了很多資料,沒有看到證明,以下是個人的證明方法。   首先要知道樹是沒有

原创 揹包問題練習之郵票

【問題描述】 已知一個N枚郵票的面值集合(如,{1分,3分})和一個上限K——表示信封上能夠貼K張郵票。計算從1到M的最大連續可貼出的郵資。 例如,假設有1分和3分的郵票;你最多可以貼5張郵票。很容易貼出1到5分的郵資(用1分郵票貼就行了

原创 揹包問題練習之貨幣系統

【問題描述】 母牛們不但創建了他們自己的政府而且選擇了建立了自己的貨幣系統。[In their own rebellious way],他們對貨幣的數值感到好奇。傳統地,一個貨幣系統是由1,5,10,20或25,50和100的單位面值組成

原创 DFS 及其相關證明

DFS 對個人來講真是個奇怪的遍歷算法,但最後再仔細看來卻是相當重要的算法,難怪在CLRS的chapter notes中講到由Hopcroft和Tarjan首先意識到DFS的重要性,記住Tarjan這個人,他在圖論上有着相當大的貢獻,而且

原创 單調隊列之烽火傳遞問題

烽火臺又稱烽燧,是重要的防禦設施,一般建在險要處或交通要道上。一旦有敵情發生,白天燃燒柴草,通過濃煙表達信息:夜晚燃燒乾柴,以火光傳遞軍情。在某兩座城市之間有n個烽火臺,每個烽火臺發出信號都有一定的代價。爲了使情報準確的傳遞,在m個烽火臺

原创 有向無環圖兩點之間的路徑數目(算法導論22.4-2)

有向無環圖G=(V,E),求其點s和e之間的路徑數目。此題首先要以點s開始作DFS,得到從s爲起點的所有可達點的一頂DFS樹,但這個路徑數目需要詳細參詳。 定義P(x),表示點s到點x的路徑數目,P(s)=1,即s到自身有一條路徑,其餘的

原创 互素數不能表出的最大數(源自動態規劃題:麥香牛塊)

原題如下: 農夫布朗的奶牛們正在進行鬥爭,因爲它們聽說麥當勞正在考慮引進一種新產品:麥香牛塊。奶牛們正在想盡一切辦法讓這種可怕的設想泡湯。奶牛們進行鬥爭的策略之一是“劣質的包裝”。“看”,奶牛們說,“如果你用只有一次能裝3塊、6塊或10塊

原创 強連通分支及kosaraju算法

圖論中最重要的結構,很多圖論問題都可以轉化爲強連通分支來降低處理複雜度。一個強連通分支中所有的點都是互相連通的,可以將其收縮爲單個點,以此來簡化圖的處理。強連通分支中的點集合是一個最大集合,即再加入任何一個其他點都會導致不連通。   引理