日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

[算法Tutorial]Adversary Argument,对手论证

發布時間:2023/12/13 综合教程 39 生活家
生活随笔 收集整理的這篇文章主要介紹了 [算法Tutorial]Adversary Argument,对手论证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對手論證,一般用于給出問題的下界。若用$P$表示所討論的問題,$I$表示問題的輸入,$A$表示解決問題的基于比較運算的算法,$T(\,A,\,I)$表示對于輸入$I$,算法$A$的計算時間復雜性,那么函數$U(n)=min{max{T(A,\,I)}, ext{ for each } I}, ext{for each } A$表示問題$P$在輸入大小為$n$時在最壞情況下的最好時間下界,它是問題所固有的。

對手論證的基本思想是對每一個$A$構造一個輸入特殊的輸入$I'$,使$T(A,\,I')$盡量地大,然后在所有$A$的集合上,求$T(A,\,I')$的盡量小的下界作為$f(n)$。對手論證方法的關鍵在于有一套對于一切$A$的適用的構造符合要求的$I'$的策略,即對手策略,逐步第構造出一個輸入$I'$,使算法$A$如果想達到預期的結果,要做盡量多次的比較和判斷,從而使$T(A,\,I')$盡量大。需要注意的是,一方面對手策略需具有一致性,即不能前后矛盾,以保證$I'$的存在性;另一方面對手策略還必須對一切$A$都適用,因為我們需要在一切$A$組成的集合上求$T(A,\,I')$得下界。


1. Find $2^{nd}$ Largest Number

我們知道,找到數組中元素的最大值,需要至少進行$n-1$次比較,那么找到第二大的呢?暴力算法就是在找一次最大唄,又是$n-2$次比較,總共是$2n-3$次比較。乍看起來也不錯了,但是通過對手論證的分析,比較的總次數可以減少為$n+lceil log n ceil -2$次。How to?

其實,所謂的第二大的元素,應該是在比較中僅僅輸給了最大元素,也就是說,只有跟最大的那個元素比過的敗者才有可能是。我們下面要說明的是,我們要找的第二大的元素應該是在那些跟最大元素比過的$lceil log n ceil$個元素中。

在對手論證中,我們每次都是選擇兩兩配對,然后進行比較,這樣的話,每次配對完后的比較,數據規模都縮減一半,也就是說,總共經過$lceil log n ceil$輪的比較,把這些輸給最大數的元素拿出來,進行一次find-Max,開銷是$O(lceil log n ceil)$就可以找到第二大的啦!!

這里其實并不是嚴格的論證,只是證明了這個界是可以達到的,詳細證明請參見這兒


2. Find Max and Min

這里也能夠使用對手論證的方式得出其最少的比較次數為$leftlceil frac{3}{2}n ightceil - 2$,具體的證明同樣參見上述鏈接

下面,我們就來說說是怎么辦到的吧,首先兩兩配對,共進行$leftlceil frac{1}{2}n ightceil$次比較,將這里面的勝者和敗者分別分為兩組,再在兩組內分別挑選Max和Min,代價是$2 imes (leftlceil frac{1}{2}n ightceil-1)$,這樣就可以得到Max和Min,總共的比較次數就是$leftlceil frac{3}{2}n ightceil - 2$啦。


3. Matrix Search

這個問題有一個十分美好的前提,那就是我們所給的$n imes n$矩陣是行列皆有序的,在這樣的條件下,我們要尋找某個元素$x$在不在矩陣中,通過對手論證,我們可以做到線性時間$O(n)$。

首先是一個并不高效的方法,對每一行采用二分搜索,最多搜索$n$行,所以復雜度為$O(nlog n)$

這里有一個超級機智的算法,<Step-wise線性搜索>從右上角開始,每次將搜索值$x$與右上角的值比較,如果大于右上角的值,則直接去除1行,否則,則去掉1列。如下所示,展示了在矩陣中查找$x=28$的過程

在對手論證中,我們只需要盡可能的構造一個數去查找,但是總是不滿足條件,比如找不到的情況,就能達到最壞情況,而最短時間就是采用這種<Step-wise>方法了。這種查找方式最多也就是遍歷完兩遍對角線,總共的探查次數最多為$n+n-1=2n-1$,所以復雜度為$O(n)$。


4.25 Horses select $1^{st}, 2^{nd}, 3^{rd}$

問題描述:有25匹賽馬,一片場地只有5條賽道,現在要求你用盡可能少的比賽場次來選出最快的前三名。

首先,至少每一匹馬都有機會去跑一遍,所以至少要先比賽5場,得出總共25匹馬的5個小組排名。接著,就是把每一組的冠軍拿出來遛遛,第6場過后,我們就能選出冠軍了,同時,我們也知道這第六場中的最后兩名一定不可能是前三名了,因為他們至少都要輸給已知的3匹馬。順帶著,這兩匹不可能的賽馬所在小組里的馬廄都不可能了,想想小組第一都敗了。(咦,當年翁學姐小組第一但是沒出線就是這么一回事兒啊!!!)那么問題來了,下面只用一場比賽能夠搞定么?答案是:可以!!

我們先給出競賽的情況,

每一行上,從快到慢排序,不失一般性,小組第一的就是$X1, X=A,B,C,D,E$,我們假設第六場比賽$A1>B1>C1>D1>E1$,$>$表示快的比較。那么$A1$一定是冠軍!下面可能是第二、第三的只可能是$A2,\,A3,\,B1,\,B2,\,C1$這5個。為什么不可能是$C2$呢?因為$C2$至少輸給了$C1$,而$C1$又至少輸給了$A1$和$B1$,那么$C2$的最好成績也不過是第四,其他的情況也是類似的分析。
所以在這第七場,遛一遛$A2,\,A3,\,B1,\,B2,\,C1$,就有第二、第三名產生了。

<算法的Mid-Exam的三大分析方法至此完結撒花!>

總結

以上是生活随笔為你收集整理的[算法Tutorial]Adversary Argument,对手论证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。