傅曉航,鄭歡歡
(南京理工大學 計算機科學與工程學院,江蘇 南京 210094)
分治算法是一個將規模較大問題分解為多個規模相同子問題的算法[1]。許多算法都是基于分治策略實現的,例如搜索、快速排序、歸并排序、TOP-K算法等等;此外分治策略能夠應用于許多算法的優化,例如防火墻規則匹配算法、蟻群算法、并行碰撞檢測算法等等,相關研究如文獻[2-5]。分治策略的核心思想是將一個問題等分為多個形式相同的子問題,圖1所示為每次將問題劃分為兩個相等子問題時的分治算法。為提高算法的性能,該文將研究將原問題分解為多少個子問題時分治算法的效率最高。

圖1 每次劃分兩子問題的分治算法
該文以搜索為例,搜索是指在一個排好序的數組中尋找與給定數值x相等的元素,很容易想到的方法是將數組遍歷,但是遍歷的復雜度為O(n),當數組的規模n很大時,查找次數將會很大。
二分搜索是將數組每次分為相等的兩部分,將待查元素x與數組中點處的元素a[n/2]比較,若a[n/2]=x則搜索成功;若a[n/2]>x,則待查元素x在數組左半區;若a[n/2] 根據分治策略的研究可以想到,如果每次將數組分為相等的更多部分,比如三部分甚至是k部分,算法性能還會不會有所提升。每次將數組分為更多的部分,則每趟查找能夠將數組縮小到更小的范圍,然而每趟需要進行額外的查找,從定性分析的角度,總的查找次數增加或減少均是有可能的。隨著k的增加,平均查找次數可能先減少,達到最低后再增加;也有可能一直增加,后續將從定量分析的角度,對k分搜索的時間復雜度進行證明。 該文將對二分、三分、四分搜索所需的平均查找次數進行復雜度分析,并進行比較,尋找規律,最后分析出k分搜索的時間復雜度。通過將每種情況下的查找次數求和并平均,得到算法的平均查找次數,進而得到其時間復雜度。可以證明,k分搜索的時間復雜度為O(klogkn),易知klogkn是單調遞增函數,因此二分搜索是效率最高的算法。此外,當k=n時,k分搜索退化為遍歷,時間復雜度退化為O(n)。 在本節中,首先通過分析平均查找次數的方式分析二分搜索的時間復雜度,然后按照相同的方式分析三分搜索的時間復雜度,最后對比兩種算法在實際數據下所需要的查找次數,并分析兩者復雜度差異的原因,為尋找k分搜索的規律做鋪墊。 258 Analysis of health-related quality of life of elderly people living alone in Shanghai 二分搜索法,是通過不斷縮小解可能存在的范圍,從而求得問題最優解的方法。二分搜索可應用于二叉搜索樹、密度峰聚類、網絡拓撲探測等算法,相關研究如文獻[6-9]。二叉搜索樹的左子樹若不為空,則其上的所有節點的值均小于根節點,同樣,若右子樹不為空,則其上的所有節點的值均大于根節點。二叉搜索樹便是利用了二分搜索的性質,既能夠快速地查找,又能方便地添加與刪除節點,是一種高效的數據結構。 二分搜索能夠應用于兩種常見的問題中:一是應用于最優解問題,求最小的x使得x滿足條件M(x),可以用二分搜索來求得最小的x[10];二是在有序數列中查找值,即在一個排好序的數列中尋找與給定值相等的元素。該文主要通過后者來分析二分搜索的時間復雜度以推出k分搜索的時間復雜度。 社會期望作為一項重要的人格特證,是兒童社會性發展的重要方面,在兒童的成長發展中發揮著不可忽視的作用。兒童的社會期望不僅與兒童的學業成績和學校表現有著密切關系[3],也會影響兒童對自我的評價[4]和安全依戀的形成[5]。因此,有必要對小學兒童的社會期望水平進行調查,對其發展狀況進行系統全面的分析研究,進而為兒童的家庭和學校教育提供可能的參考依據。 二分搜索的方法如圖2所示,先將待查元素x與二分之一處的元素比較,若相等,則查找成功;若該元素大于x,則繼續在數組左半區查找;若該元素小于x,則繼續在數組右半區查找。這樣每次都可以將搜索范圍縮小一半。 圖2 二分搜索的過程 50例ASO患者實驗觀察指標以SPSS19.0計算。護理工作滿意度以%形式展開,采用χ2檢驗;飲食知識掌握以及護理知識掌握評分以(±s)形式展開,進行t檢驗。P<0.05證明差異有統計學意義。 1. low←1;high←n;j←0; 2. while(low≤high)and(j=0); 3. mid←(low+high)/2; 2.3 孕晚期血清sFlt-1、PLGF及其比值與子癇前期發病時間的關系 在11例發病的高危孕婦中有早發型子癇前期孕婦2例,晚發型子癇前期孕婦9例。早發型子癇前期組血清log(sFlt-1)的均值為3.82 pg/ml,晚發型組為3.29 pg/ml。血清log(PLGF)的均值在早發型及晚發型子癇前期組中分別為1.83 pg/ml、2.27 pg/ml。血清log(sFlt-1/PLGF)比值在早發型及晚發型子癇前期組中均值分別為1.99、1.01。因早發型子癇前期組孕婦例數過少,數據不符合正態分布,未進行統計學分析。 卞遷與齊薇(卞遷,齊薇等,2009)指出目前最常用的眼動記錄方法是無創的視頻記錄法。利用眼動儀進行研究時測試參數一般包括:注視點軌跡圖、熱點圖、關注區域、注視點個數、首個注視點的注視時長、首次進入AOI的時間、每次訪問的平均時間等。一項研究應根據研究內容和研究目標選擇2-3個測試參數。 S=(i-1)×2i+1 5. else ifx 6. else low←mid+1; 7. end while; 8. returnj。 要堅持走開放型、創新型和高端化、信息化、綠色化發展的新路子,構建現代產業新體系,從中尋找突破口和切入點,做好產業轉型升級的統籌規劃,進一步明晰產業轉型升級的總體思路、目標任務、方向路徑、工作重點和落實機制,揚長避短發揮比較優勢,加快推動產業結構由中低端向中高端邁進。推進高原特色農業現代化,促進三大產業融合發展,提高質量效益和競爭力。實施“中國制造2025”云南行動計劃,有選擇性地承接東部地區出口加工業轉移,探索“共建園區”或“飛地經濟”,實行引進產業與本地特色有優勢產業的有機融合、聯動發展。 圖3所示為二分查找過程的判定樹,要在一個有序數列[2 4 6 9 11 15 18 22 24 31 35]中尋找值為22的元素,首先將22與數組中點處的元素15比較,22大于15,則待查元素在數列右半區;再將其與數列右半區中點處的元素24比較,發現22小于24,則繼續在左半區查找;而22大于左半區中點處的元素18,則繼續在右半區查找,最終找到22。 圖3 二分搜索查找過程的判定樹 時間復雜度的分析以分析每個元素被查找到的概率的方式進行。經過1次查找就能被找到的元素個數為20,經過2次查找就能被找到的元素個數為21,以此類推,經過i次查找就能被找到的元素個數為2i-1。設S為所有元素被查找到所需要的總次數,則有: S=1×20+2×21+3×22+…+(i-1)× S=1×30+2×31+3×32+…+(i-1)× (1) 通過錯位相減法可以求解式(1),得到: 4. ifx=A[mid] thenj←mid; (2) 由1+2+4+…+2i-1=2i-1≥n,可以得到i≤log2(n+1),代入式(2)可得: S≤(log2(n+1)-1)(n+1)+1 (3) 每個元素被查找到的概率為1/n,則時間復雜度T(n)=S/n,代入得: 11. end while (4) 即二分搜索平均查找次數的時間復雜度為log2(n+1)-1。通過圖4可以看出,二分搜索與線性查找相比,時間復雜度由O(n)降到了O(log2n),效率得到了明顯的提升。 圖4 二分搜索與遍歷的時間復雜度的比較 利用二分搜索高效查找的性質,能夠將二分搜索應用于一種數據結構即二叉搜索樹,又稱二分搜索樹、二叉排序樹,如圖5所示。二叉搜索樹是一種二叉樹,對于樹中的每一個節點,若其左子樹存在,則根節點的值不小于其左子樹中每一個節點的值;若其右子樹存在,則根節點的值不大于其右子樹中每一個節點的值,二叉搜索樹的相關研究如文獻[11-14]。若二叉搜索樹為滿二叉樹,則其搜索的時間復雜度為O(log2n),若每層只有一個節點,則復雜度為O(n),因此二叉搜索樹的時間復雜度為O(log2n)~O(n)。 (5) 而二分搜索平均僅需20次即可查找成功,極大地提高了算法的性能。 丁珰又道:“天哥他確有過犯,自己送了命也就罷了,最可惜石莊主夫婦這等俠義仁厚之人,卻也要賠上兩條性命。” 例如,對一個規模為1e6的問題,遍歷需要的平均查找次數為: 豎爐密封性較好,通常難以知曉豎爐內部爐墻的實際工況,可使用Raytek手持式紅外測溫儀檢測銅磚部位的溫度,且關注超過500 ℃的狀況,再根據爐殼發紅現象進行綜合判斷,該測溫儀具有響應時間快、非接觸、操作簡單、使用安全及壽命長等優點。 二分搜索的偽代碼如下: 圖5 二叉搜索樹 二叉搜索樹能夠做到與線性二分查找一樣的時間復雜度O(log2n)。線性二分查找需要保證待查序列是單調的,因此增加或者刪除節點時,需要較多的操作;而二分搜索樹能夠高效地對節點進行增加或者刪除操作,是對二分搜索進行優化的一種數據結構。 后續將繼續分析,若將問題劃分為更多的子問題,即二分搜索、k分搜索,能否更好地提升搜索算法的性能。 三分搜索的方法如圖6所示,先將待查元素x與三分之一處的元素比較,然后將x與三分之二處的元素進行比較[15]。若相等,則搜索成功;若x小于第一個元素,則繼續在左三分之一部分查找;若x大于第一個元素小于第二個元素,則繼續在中間三分之一部分查找;若x大于第二個元素,則繼續在右三分之一部分查找。 圖6 三分搜索的過程 三分搜索每次能將查找范圍縮小三分之一,繼續查找,直到找到待查元素x。 現代服裝設計中創新應用傳統文化元素與藝術價值,第一個必要性體現在,這是現代服裝設計創新突破的需要。民族的也是世界的,傳統文化為當代的服裝設計提供了源源不斷的設計思路和設計理念,面對著當前高速發展的時代和服裝設計行業的加速更新和變革,行業內部的更新換代以及行業內部的競爭也愈發的激烈,面對這樣的現實狀況,現代服裝設計師在日常工作的過程當中所需要巨大的靈感,而這些靈感則必須是要適應市場的,有可落地實施的價值的,基于這樣的現實考量,從傳統文化當中吸取營養就顯得非常必要。 其偽代碼如下: 1. low←1;high←n;j←0; 2. while(low≤high)and(j=0); 3. midl←low+(high-low)/3; 4. midr←low+2(high-low)/3; 5. ifx 由于委派制在某種程度上的“過渡性”和“不徹底性”,審計人員的專業化、系統化的培訓較少,人員專業素養提升較慢,難以勝任日益復雜的審計業務要求。 6. else ifx=A[midl] thenj←midl; 7. else;1 二分搜索與三分搜索
1.1 二分搜索





1.2 三分搜索
