一、b-樹:
外部結點:含有指向實際資料的引用
2、一棵m階b-樹(m為正偶數)或者僅是乙個外部k-結點或者由若干內部k-結點組成。它的結構性質如下:從根節點到每個外部結點的路徑長度均相同;對於根結點,k在2到m-1之間,對於其他結點k在m/2到m-1之間。
3、含有n個元素的m階b-樹中的一次查詢或插入操作需要logmm~logm/2n次探查------在實際情況下這基本是乙個常數。
4、
public class btreeset>
public boolean contains(key key)
public boolean contains(page h, key key)
public void add(key key) }
public void add(page h, key key)
page next = h.next(key);
add(next, key);
if (next.isfull())
h.add(next.split());
next.close();
}}
二、字尾陣列:
問題:最長重複子字串?
最長公共字首?
1、使用三向字串快速排序,構造長度為n的隨機字串的字尾陣列,平均所需的空間與n成正比,字元比較次數與~2nlnn成正比。
2、字尾陣列(初級實現)
四、問題規約public class suffixarray
public int length()
public string select(int i)
public int index(int i)
private static int lcp(string s, string t)
{} public int lcp(int i)
public int rank(string key)
return lo;
}}
三、網路流演算法:
1、定義:乙個流量網路是一張邊的權重為正的加權有向圖,乙個st-流量網路有兩個已知的頂點,即起點s和終點t。
2、定義;st-流量網路中的st-流量配置是一組和每條邊相關聯的值組成的集合,這個值被稱為邊的流量。如果所有邊的流量均小於邊的容量且滿足每個頂點的區域性平衡,那麼就稱這種流量配置方案是可行的。
3、最大st-流量:給定乙個st-流量網路,找到一種st-流量配置,使得s到t的流量最大化。
4、ford-fulkerson演算法最大流量演算法:增廣路徑演算法:網路中的初始流量為零,沿著任意從起點到終點(且不含有飽和的正向邊或空的逆向邊)的增廣路徑增大流量,直到網路中不存在這樣的路徑為止。
5、st-切分是乙個將頂點s和頂點t分配於不同集合中的切分。
6、最小st-切分。給定乙個st-網路,找到容量最小的st-切分。---最小切分問題。
7、對於任意st-流量網路,每種st-切分中的跨切分流量都和總流量的值相等。
8、(最大流量-最小切分定理)令f為乙個st-流量網路,以下三種條件是等價的:
存在某個st-切分,其容量和f的流量相等
f達到了最大流量
f中已經不存在任何增廣路徑
9、給定某個st-流量網路和其st-流量配置,這種配置下的剩餘網路中的頂點和原網路相同。原網路中的每條邊都對應著剩餘網路中的1~2條邊。它的定義如下:對於原網路中的每條從頂點v到w的邊e,令fe表示它的流量,ce表示它的容量。如果fe為正,將邊w->v加入剩餘網路且容量為fe;如果fe小於ce,將邊v->w加入剩餘網路且容量為ce-fe.
10、增廣路徑的查詢等價於剩餘網路中的廣度優先搜尋。
public class fordfulkerson
} public double value()
public boolean incut(int v)
public static void main(string args)
}
1、以下問題可以被歸約為排序問題:
尋找中位數
統計不同的值
最小平均完成時間的排程問題
2、問題解決模型 但注意maslow錘子問題
3、最短路徑問題歸約:
非負權重無向圖中的單點最短路徑問題
優先順序限制下的並行任務排程問題
套匯4、可歸約為最大流量問題:
就業安置
產品配送
網路可靠性
其他許多問題
5、可歸約為線性規劃問題:
最大流量問題
最短路徑問題
許多許多其他問題
6、我們一般認為指數時間的演算法無法保證在合理的時間內解決規模超過100的問題。
7、如果乙個問題有解且驗證它的解的正確性所需的時間不會超過輸入規模的多項式,則稱這種問題為搜尋問題,當乙個演算法給出了乙個解或是已證明解不存在時,就稱它解決了乙個搜尋問題。
8、np是所有搜尋問題的集合。
9、部分搜尋問題:
線性等式可滿足性
線性不等式可滿足性
0~1整數線性不等式可滿足性
布林可滿足性
10、p是能夠在多項式時間內解決的所有搜尋問題的集合。
11、np中的n表示非確定性。
12、布林可滿足性問題能夠在多項式時間內規約為0-1整數線性不等式可滿足性問題
13、如果可滿足性問題是難以解決的,那麼整數線性規劃問題也是難以解決的。
14、若np中的所有問題都能在多項式時間內規約為搜尋問題a,那麼則稱問題a是np-完全的。
15、布林可滿足性問題是np-完全的。
字尾樹 字尾陣列
在字串處理當中,字尾樹和字尾陣列都是非常有力的工具,其中字尾樹大家了解得比較多,關於字尾陣列則很少見於國內的資料。其實字尾陣列是字尾樹的乙個非 常精巧的替代品,它比字尾樹容易程式設計實現,能夠實現字尾樹的很多功能而時間複雜度也不太遜色,並且,它比字尾樹所占用的空間小很多。可以說,在資訊學競賽 中字尾...
字尾樹 字尾陣列
我們考慮將乙個串的所有字尾插入乙個trie中,得到的trie就是字尾trie。我們可以發現,樹上有分叉或者是字尾節點的點的個數是o l en o len o len 個,這個後面解釋,於是把沒有分支並且不是字尾節點的點壓縮到一起,就變成了字尾樹。不難發現,字尾樹可以表示該字串的所有子串。下面分析一下...
字尾樹與字尾陣列
字尾樹和字尾陣列是字串處理的兩大神器,幾乎可處理掉一切的字串處理問題,但是在實際中,字尾陣列比字尾樹更好寫 好調,同時時間上也不差 常數很小 所以字尾陣列絕對是oi競賽之必備神器。字尾樹,實際上就是一棵字典樹。考慮將某個串 s 的所有字尾插到一棵trie裡,那麼我們就得到了一棵字尾樹。在這裡,我們不...