這種演算法有種特點:如果資料是儲存在磁碟或者磁帶上,便可以順序地讀取,無需在主存中儲存資料的任何部分。
在處理最大子序和的問題中,存在一種聯機演算法,具體實現如下(基於c):
1int maxsubsequencesum(const
int a[ ], int
n) 11
else
if (tempsum < 0
) 14}15
16return
maxsum;
17 }
可見,該演算法的在執行過程中只對序列進行一次掃瞄,並且無需記憶已經操作過的資料,這就是聯機演算法,它對已經讀入的資料,當即就可以給出最大子序和。
也叫離線演算法,在演算法執行前所有的輸入資料已知,換句話說,對於乙個離線演算法,在開始時就需要知道問題的所有輸入資料,和需要進行的所有操作,而且在解決乙個問題後就要立即輸出結果。
同樣是序列最大子序和的問題,如下採用的演算法便是離線演算法,具體實現(基於c):
1int maxsubsquencesum(const
int a, int
n) 13}14
}1516return
maxsum;
17 }
由於對資料的處理方式不同,聯機演算法在結果的產生上便形成了較為明顯的區別:
而離線演算法則是利用所有的資料參與計算,最終得到乙個結果,其時間複雜度是非線性的,需要對資料多次掃瞄,無法像聯機演算法一樣順序讀入並出結果,可以理解為:「菜全部做好了再開始營業」,相當於自助餐廳,ready。
不相交集ADT(聯機演算法 離線演算法)
0.1 本文總結於 資料結構與演算法分析,旨在分享 不相交集adt的相關概念 0.2 不相交集adt 的知識涉及到 等價關係 動態等價關係 不相交集adt相關操作及其資料結構 還有我們最後分享的不相交集adt的應用 0.3 關於不相交集adt的求並操作 find union 參見 0.4 關於不相交...
用聯機演算法求最大子列和
在 資料結構和演算法分析 c語言描述 一書中,有一段關於求最大子列和的演算法比較,其中提到了用聯機演算法實現。聯機演算法是在任意時刻演算法對要操作的資料唯讀入 掃瞄 一次,一旦被讀入並處理,它就不需要在被記憶了。而在此處理過程中演算法能對它已經讀入的資料立即給出相應子串行問題的正確答案。還有對這種演...
LCA離線演算法tarjan
lca演算法 lca least common ancestor 是指在一棵樹中,距離兩個點最近的兩者的公共節點。也就是說,在兩個點通往根的道路上,肯定會有公共的節點,我們就是要求找到公共的節點中,深度盡量深的點。還可以表示成另一種說法,就是如果把樹看成是乙個圖,這找到這兩個點中的最短距離。本文先介...