關於ASL(平均查找長度)的簡單總結

ASL(Average Search Length),即平均查找長度,在查找運算中,因爲所費時間在關鍵字的比較上,因此把平均須要和待查找值比較的關鍵字次數成爲平均查找長度。算法

它的定義是這樣的:函數

                                                         

其中n爲查找表中元素個數,Pi爲查找第i個元素的機率,一般假設每一個元素查找機率相同,Pi=1/n,Ci是找到第i個元素的比較次數。性能

固然,有查找成功,就有查找不成功,即要查找元素不在查找表中。針對不一樣查找方式的查找成功與不成功,我接下來會說,這也是一我一開始有點亂的地方。spa

一個算法的ASL越大,說明時間性能差,反之,時間性能好,這也是顯而易見的。3d

  • 順序查找(Sequence Search)表中,查找方式爲從頭掃到尾,找到待查找元素即查找成功,若到尾部沒有找到,說明查找失敗。因此說,Ci(第i個元素的比較次數)在於這個元素在查找表中的位置,如第0號元素就須要比較一次,第一號元素比較2次......第n號元素要比較n+1次。因此Ci=i;因此 

    

            能夠看出,順序查找方法查找成功的平均 比較次數約爲表長的一半。當待查找元素不在查找表中時,也就是掃描整個表都沒有找到,即比較了n次,查找失敗blog

            

  • 折半查找(Binary Search),首先待查找表是有序表,這是折半查找的要求。在折半查找中,用二叉樹描述查找過程,查找區間中間位置做爲根,左子表爲左子樹,右子表爲右子樹,,由於這顆樹也被成爲斷定樹(decision tree)或比較樹(Comparison tree)。查找方式爲(找k),先與樹根結點進行比較,若k小於根,則轉向左子樹繼續比較,若k大於根,則轉向右子樹,遞歸進行上述過程,直到查找成功或查找失敗。在n個元素的折半查找斷定樹中,因爲關鍵字序列是用樹構建的,因此查找路徑實際爲樹中從根節點到被查結點的一條路徑,由於比較次數恰好爲該元素在樹中的層數。因此Pi爲查找k的機率,level(Ki)爲k對應內部結點的層次。而在這樣的斷定樹中,會有n+!種查找失敗的狀況,由於將斷定樹構建爲徹底二叉樹,又有n+1個外部結點(用Ei(0<=i<=n)表示),查找失敗,即爲從根結點到某個外部結點也沒有找到,比較次數爲該內部結點的結點數個數之和,因此,qi表示查找屬於Ei中關鍵字的機率,level(Ui)表示Ei對應外部結點的層次。因此,在一顆有n個結點斷定樹中,總數,因此斷定樹高度爲的滿二叉樹,第i層上結點個數爲,查找該層上的結點須要進行i次比較,所以,在等機率狀況下ASL爲                                         
  • 例:給11個數據元素有序表(2,3,10,15,20,25,28,29,30,35,40)採用折半查找。則ASL成功和不成功分別是多少?首先畫出斷定樹,     查找成功時總會找到途中某個內部結點,因此成功時的平均查找長度爲 即25查找一次,成功,10,30要查找2次,成功,2,15,28,35要查找3次,成功,3,20,29,40要查找4次,成功。 而不成功的平均查找長度爲  ,爲何這麼算呢,由於內部結點都能查找成功,而查找不成功的就是那些空的外部結點,因此到查詢到2的左孩子,15的左孩子,28的左孩子,35的左孩子,3的左右孩子,20的左右孩子,29的左右孩子,40的左右孩子時,都是查找不成功的時候。如我要找1,比25小,轉向左子樹,比較一次,比10小,轉左子樹,2次,比2 小,轉左子樹,3次,此時2無左子樹,因此失敗。因此 。
  •  哈希表中的ASL   查找成功的平均查找長度是指查找到哈希表中已有關鍵字的平均探測次數。而查找不成功的平均查找長度是指在哈希表中找不到待查的元素,最後找到空位置元素的探測次數平均值。遞歸

  • 例:散列表長度爲13,地址空間爲0~12,散列函數H(k) =K mod 13,對關鍵字序列{19,14,23,01,68,20,84,27,55,11,10,79}  因此線性探測結果爲:ci

     

         

根據探測次數,io

    

          固然成功的很好理解,12個元素,每一個元素的探測次數之和除以12就行。而不成功的計算是這樣的。散列表長度爲13,根據定義,假設待查關鍵字不在散列表中,要一直找到空元素纔算查找失敗,如H[0]爲空,與待查找元素不等,不成功,比較一次,H[1],此時H[1]的元素與本來放在H[1]的元素不等(假設不在散列表在之中,但也不是空的),繼續向後比,與H[2]比也不等,繼續向後,一直到H[12],也不等,繼續向後時,回到H[0],爲空,也不等,查找失敗,總計比較13次,而後計算第二號元素,同樣的比較,一直把每一個位置都統計一遍,從而得出ASL不成功的.class

  • 以上就是對ASL的小小總結,爲了增強本身的理解,也便於本身之後的回顧和修改,還有有一點很開心的是,最爲新蘭黨,總算讓我在2019年初等到了洗衣機和蘭醬的休學旅行,很滿意了。
相關文章
相關標籤/搜索