<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      隨機(jī)算法:蒙特卡洛和拉斯維加斯算法

      1 隨機(jī)算法

      隨機(jī)性在計(jì)算機(jī)科學(xué)中的最初應(yīng)用之一就是隨機(jī)算法。隨機(jī)算法是能夠獲得隨機(jī)性來(lái)源(比如隨機(jī)數(shù)生成器)的算法,它允許在很小的概率內(nèi)出錯(cuò)。目前已經(jīng)有許多問(wèn)題我們知道怎樣用隨機(jī)算法高效地求解,而并不知道怎樣用確定性算法(即不使用隨機(jī)性的算法)高效求解。事實(shí)上,計(jì)算機(jī)科學(xué)中最重要的open problems之一就是詢問(wèn)每個(gè)高效的隨機(jī)算法是否都有其對(duì)應(yīng)求解相同問(wèn)題的確定性算法。

      下面是個(gè)簡(jiǎn)單的隨機(jī)算法例子:

      import numpy as np
      def f(x):
          y = np.random.binomial(1, 0.5)
          if y == 0:
              while x > 0:
                  print("What up?")
                  x -= 1
          return x + y
      

      對(duì)于一個(gè)確定的輸入(比如\(x=3\)),其輸出可能會(huì)有差異,且其運(yùn)行時(shí)間也可能有差異。那么對(duì)于一個(gè)隨機(jī)算法,我們?nèi)绾味攘科湔_性(correctness)和運(yùn)行時(shí)間(running time)呢?事實(shí)上,如果我們要求它輸出結(jié)果總是正確的,且運(yùn)行時(shí)間總是\(O(T(n))\),則它就是時(shí)間復(fù)雜度為\(T(n)\)的確定性算法了。

      因此,對(duì)于隨機(jī)算法它要么不是在所有情況下總是正確的,要么就不能保證運(yùn)行時(shí)間總為\(O(T(n))\),它可以看做是在正確性和運(yùn)行時(shí)間之間做賭博(gamble)。

      2 蒙特卡洛算法和拉斯維加斯算法

      我們來(lái)看下面這個(gè)例子,給點(diǎn)\(n\)個(gè)元素(\(n\)為偶數(shù))的序列\(A\),一半為\(0\)一半為\(1\),我們想在想要找到一個(gè)含\(1\)的序列下標(biāo)。那么我們可以寫出下面兩個(gè)不同的算法:

      我們將左邊這種賭博時(shí)間但不賭博正確性的算法稱為拉斯維加斯(Las Vegas)算法,右邊這種賭博正確性但不賭博時(shí)間的算法為蒙特卡洛(Monte Carlo)算法

      如圖所示的拉斯維加斯算法的失敗概率\(\text{Pr}(\text{failure})=0\),最壞運(yùn)行時(shí)間無(wú)界,期望運(yùn)行時(shí)間為\(O(1)\)(2次迭代);而如圖所示的蒙特卡洛算法失敗概率\(\text{Pr}(\text{failure})=\frac{1}{2^{300}}\),最壞運(yùn)行時(shí)間為\(O(1)\)

      總結(jié)一下,在我們上面這個(gè)問(wèn)題中兩個(gè)算法的區(qū)別如下表所示:

      正確性 運(yùn)行時(shí)間
      確定性 總是正確 \(\Omega(n)\)
      蒙特卡洛 大概率正確 \(O(1)\)
      拉斯維加斯 總是正確 大概率\(O(1)\)

      下面給出蒙特卡洛算法和拉斯維加斯算法的形式化定義。

      蒙特卡洛算法 設(shè)\(f: \Sigma^* \rightarrow \Sigma^*\)為一個(gè)可計(jì)算問(wèn)題,\(0 \leqslant \epsilon<1\)為參數(shù),\(T: \mathbb{N} \rightarrow \mathbb{N}\)為一個(gè)函數(shù)。若\(A\)為一個(gè)隨機(jī)算法,它使得

      • 對(duì)任意\(x\in\Sigma^*\)\(\operatorname{Pr}\left(A(x) \neq f(x)\right) \leqslant \epsilon\)
      • 對(duì)任意\(x\in\Sigma^*\)\(\operatorname{Pr}\left(\text { number of steps } A(x) \text { takes is at most } T(|x|) \right)=1\)

      (注意此處的概率基于\(A\)做出的隨機(jī)選擇)
      則我們聲稱\(A\)是一個(gè)能夠以\(T(n)\)時(shí)間、\(\epsilon\)的錯(cuò)誤概率計(jì)算問(wèn)題\(f\)的蒙特卡洛算法。

      拉斯維加斯算法 設(shè)\(f: \Sigma^* \rightarrow \Sigma^*\)為一個(gè)可計(jì)算問(wèn)題,\(T: \mathbb{N} \rightarrow \mathbb{N}\)為一個(gè)函數(shù)。若\(A\)為一個(gè)隨機(jī)算法,它使得

      • 對(duì)任意\(x\in\Sigma^*\)\(\operatorname{Pr}\left(A(x) = f(x)\right)=1\)(這里概率基于\(A\)做出的隨機(jī)選擇);
      • 對(duì)任意\(x\in\Sigma^*\)\(\textbf{E}\left(\text { number of steps } A(x) \text { takes }\right) \leqslant T(|x|)\)

      則我們聲稱\(A\)是一個(gè)能夠以\(T(n)\)時(shí)間計(jì)算問(wèn)題\(f\)的拉斯維加斯算法。

      3 蒙特卡洛算法實(shí)例:最小割(Min Cut)隨機(jī)化算法

      圖割集是一個(gè)邊的集合,當(dāng)去掉這些邊時(shí)將\(G\)分為兩個(gè)或多個(gè)連通部分。給定一個(gè)有\(n\)個(gè)頂點(diǎn)的圖\(G=(V, E)\),最小割問(wèn)題就是在圖\(G\)中尋找一個(gè)基數(shù)最小的割集,也即找到非空子集\(S\subset V\)使得從\(S\)\(V-S\)的邊數(shù)最小化。

      接下來(lái)我們會(huì)介紹一個(gè)求解最小割算法的簡(jiǎn)單隨機(jī)算法,該算法中重要的操作為邊的縮減

      該算法包括\(n-2\)次迭代(\(n\)為頂點(diǎn)數(shù)目)。在每次迭代中,算法從圖的現(xiàn)有邊中均勻隨機(jī)地選出一條邊并將它縮減掉。在縮減邊\((u, v)\)時(shí),將兩個(gè)頂點(diǎn)\(u\)\(v\)合并成一個(gè)頂點(diǎn),刪除所有連接\(u\)\(v\)的邊,保留圖中所有其他的邊。新圖可能有重邊,但沒(méi)有自環(huán)。

      每一次迭代都會(huì)使圖中的頂點(diǎn)數(shù)目減少一個(gè),經(jīng)過(guò)\(n-2\)次迭代后,圖中只剩下兩個(gè)頂點(diǎn)。算法輸出連接這兩個(gè)保留頂點(diǎn)的邊的集合。

      下面我們來(lái)看在最小割集大小為\(2\)的圖中,兩種最小割算法執(zhí)行的例子。首先是成功運(yùn)行的實(shí)例:

      然后是不成功運(yùn)行的實(shí)例:

      現(xiàn)在我們來(lái)建立算法輸出正確結(jié)果的概率的下界。

      定理 算法至少以\(2/(n(n-1))\)的概率輸出最小割集。

      證明 我們?cè)O(shè)集合\(C\)為圖的最小割集,除去集合\(C\)后將頂點(diǎn)集合分為兩個(gè)集合\(S\)\(V-S\),使得不存在連接\(S\)中的頂點(diǎn)到\(V-S\)中的邊。我們?cè)谒惴ㄖ锌s減的邊是\(S\)中的頂點(diǎn)或\(V-S\)中頂點(diǎn)的邊,經(jīng)\(n-2\)次迭代后,算法輸出的是由\(C\)中邊連接的兩個(gè)頂點(diǎn)的圖。所有,我們可以得到結(jié)論:如果算法在\(n-2\)次迭代中根本不選擇\(C\)中的邊,那么算法輸出的\(C\)就是最小割集。

      設(shè)\(E_i\)表示第\(i\)次迭代時(shí)縮減的邊不在\(C\)中這一事件,\(F_i =\bigcap_{j=1}^i E_j\)表示在前\(i\)次迭代中沒(méi)有縮減\(C\)中邊的事件。我們需要計(jì)算的算法在\(n-2\)次迭代中不選擇\(C\)中的邊的概率,即為\(\text{Pr}(F_{n-2})\)

      我們從計(jì)算\(\text{Pr}(E_1)=\text{Pr}(F_1)\)開(kāi)始。因?yàn)樽钚「罴?span id="w0obha2h00" class="math inline">\(k\)條邊,所以圖中每個(gè)頂點(diǎn)至少連接\(k\)條邊(即度至少為\(k\)),則根據(jù)握手定理圖中至少有\(nk/2\)條邊。第一次縮減的邊是從所有邊中均勻隨機(jī)地選取的,故第一次迭代沒(méi)有選取\(C\)中邊的概率為:

      \[\text{Pr}(E_1) = \text{Pr}(F_1)\geqslant 1 - \frac{k}{(nk)/2} = 1 - \frac{2}{n} \]

      接下來(lái),假設(shè)第一次縮減沒(méi)有消去\(C\)中的邊,即給定了事件\(F_1\)成立這一條件,那么我們?cè)诮酉聛?lái)的有\(n-1\)個(gè)頂點(diǎn)的新圖中也沒(méi)有選取到\(C\)中邊的概率為:

      \[\text{Pr}(E_2|F_1) \geqslant 1 - \frac{k}{k(n-1)/2} = 1 - \frac{2}{n-1} \]

      類似地,我們有:

      \[\text{Pr}(E_i|F_{i-1}) \geqslant 1 - \frac{k}{k(n-i+1)/2} = 1 - \frac{2}{n - i + 1} \]

      \[\begin{aligned} \text{Pr}(F_{n-2}) &= \text{Pr}(F_1)\text{Pr}(E_2|F_1)\cdots\text{Pr}(E_{n-2} | F_{n-3}) \\ &= \prod_{i=1}^{n-2}(1 - \frac{2}{n-i+1}) = \prod_{i=1}^{n-2}(\frac{n-i-1}{n-i+1})\\ &= \left(\frac{n-2}{n}\right) \left( \frac{n-3}{n-1}\right) \left( \frac{n-4}{n-2}\right)\cdots \left(\frac{3}{5}\right) \left(\frac{2}{4}\right) \left(\frac{1}{3}\right)\\ &= \frac{2}{n(n-1)} \end{aligned} \]

      得證。

      因?yàn)樗惴ň哂袉芜呭e(cuò)誤的性質(zhì),我們可以重復(fù)運(yùn)行算法來(lái)減小出錯(cuò)率。假設(shè)運(yùn)行最小割隨機(jī)化算法\(n(n-1)\ln n\)次,并輸出再所有迭代次中找到的最小長(zhǎng)度割集。則輸出不是一個(gè)最小割集的概率界為

      \[\text{Pr}(\text{error}) = {\left(1 - \frac{2}{n(n-1)}\right)}^{n(n-1)\ln n}\leqslant e^{ -2\ln n} = \frac{1}{n^2} \]

      在第一個(gè)不等式中,我們用到了經(jīng)典不等式:\(\forall x\in \mathbb{R}: 1 + x \leqslant e^x\)

      4 拉斯維加斯算法實(shí)例:隨機(jī)快速排序算法

      快速排序是一種簡(jiǎn)單且實(shí)際上非常有效的排序算法。給定輸入列表\(S=\{ x_1, x_2,\cdots x_n\}\),隨機(jī)快速排序算法可描述如下:

      • 如果\(n\leqslant 1\),返回\(S\)

      • 均勻隨機(jī)地選擇基準(zhǔn)(pivot)\(x_m\)

      • \(S\)中每個(gè)其它元素與\(x_m\)做比較,以將\(S\)劃分為兩個(gè)子列表:\(S_1=\{x_i: x<x_m\}\), \(S_2=\{x_i: x_i>x_m\}\)

      • 遞歸地對(duì)\(S_1\)\(S_2\)排序。

      對(duì)于隨機(jī)快速排序算法,我們有以下定理:
      定理 假設(shè)在隨機(jī)快速排序算法中,每一次都是從所有可能中獨(dú)立且隨機(jī)地選取基準(zhǔn),那么對(duì)于任意的輸入,隨機(jī)快速排序算法所做比較的期望次數(shù)為\(2n\ln n + \Theta(n)\)(這里的期望是關(guān)于基準(zhǔn)的隨機(jī)選取)。

      證明 設(shè)\(y_1, y_2, \cdots, y_n\)與輸入值\(x_1,x_2, \cdots, x_n\)有相同的值,但是按照升序排列。對(duì)\(i<j\),記\(X_{ij}\)為一隨機(jī)變量,如果在算法執(zhí)行過(guò)程的任何時(shí)候\(y_i\)\(y_j\)進(jìn)行了比較,則\(X_{ij}\)的值為\(1\),否則取\(0\)。那么比較的總次數(shù)滿足

      \[X = \sum_{i=1}^{n-1}\sum_{j=i+1}^n X_{ij} \]

      且根據(jù)期望的線性性得

      \[\mathbf{E}(X) = \mathbf{E}(\sum_{i=1}^{n-1}\sum_{j=i+1}^n X_{ij})=\sum_{i=1}^{n-1}\sum_{j=i+1}^n \mathbf{E}(X_{ij}) \]

      由于\(X_{ij}\)只是取\(0\)\(1\)的示性隨機(jī)變量,\(\mathbf{E}(X_{ij})\)等于\(X_{ij}\)為1的概率。因此,我們接下來(lái)只需計(jì)算兩個(gè)元素\(y_i\)\(y_j\)相比較的概率即可。
      現(xiàn)在,\(y_i\)\(y_j\)相比較,當(dāng)且僅當(dāng)\(y_i\)\(y_j\)是從集合\(Y^{ij}=\{y_i,y_{i+1},\cdots, y_{j-1}, y_{j}\}\)中由隨機(jī)快速排序算法選取的第一個(gè)基準(zhǔn)。這是因?yàn)槿绻?span id="w0obha2h00" class="math inline">\(y_i\)(或\(y_j\))是從這個(gè)集合選取的第一個(gè)基準(zhǔn),\(y_i\)\(y_j\)必仍在同一個(gè)子列表中,因此它們將會(huì)進(jìn)行比較。反之,如果兩者都不是從這個(gè)集合中選取的第一個(gè)基準(zhǔn),那么\(y_i\)\(y_j\)將會(huì)被分在不同的子列表中,所以不會(huì)進(jìn)行比較。

      因?yàn)槲覀兊幕鶞?zhǔn)都是從每個(gè)子列表中獨(dú)立且隨機(jī)地選取的,也就是第一次從\(Y^{ij}\)中選取的一個(gè)基準(zhǔn)等可能地是這個(gè)集合中的任一元素。因此\(y_i\)\(y_j\)是從\(Y^{ij}\)中選取的第一個(gè)基準(zhǔn)的概率(即\(X_{ij}\)\(1\)的概率)是\(\frac{2}{j-i+1}\)。利用替換\(k=j-i+1\),得

      \[\begin{aligned} \mathbf{E}(X) &=\sum_{i=1}^{n-1}\sum_{j=i+1}^n \frac{2}{j-i+1}= \sum_{i=1}^{n-1}\sum_{k=2}^{n-i+1}\frac{2}{k} = \sum_{k=2}^{n}\sum_{i=1}^{n+1-k} \frac{2}{k} \\ &= \sum_{k=2}^n(n+1-k)\frac{2}{k} = \left( (n+1) \sum_{k=2}^n \frac{2}{k}\right) - 2(n-1) = (2n+2)\sum_{k=1}^n\frac{1}{k} - 4n \end{aligned} \]

      注意第3個(gè)等式交換了雙重求和的次序,這樣就可以將內(nèi)層求和直接用乘法表達(dá)出來(lái),從而得到了期望的簡(jiǎn)潔形式。交換求和順序的示意圖如下所示:

      又因?yàn)檎{(diào)和級(jí)數(shù)\(H(n) = \sum_{k=1}^n\frac{1}{k}\)滿足\(H(n) = \ln n+ \Theta(1)\),因此,\(\mathbf{E}(X) = 2n \ln (x) + \Theta(n)\),得證。

      參考

      posted @ 2020-08-12 19:47  orion-orion  閱讀(2337)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 99久热在线精品视频| 亚洲一区二区精品动漫| 精品国产一区二区三区久久女人 | 国产妇女馒头高清泬20p多毛| 国产超碰无码最新上传| 亚洲精品一区二区三区蜜| 国产色悠悠综合在线观看| 国产成年码av片在线观看| 婷婷99视频精品全部在线观看| 国产高清小视频一区二区| 午夜福利在线观看入口| 日韩国产成人精品视频| 日韩无人区码卡1卡2卡| 亚洲国产精品成人无码区| 国产在线视频www色| 最新精品露脸国产在线| 女同在线观看亚洲国产精品| 欧美精品一区二区三区在线观看| 亚洲欧美人成网站在线观看看| 亚洲AV日韩AV综合在线观看 | 人妻无码久久久久久久久久久| 亚洲丰满熟女一区二区蜜桃| 林周县| 欧美人与动牲交A免费观看| 久久亚洲精品天天综合网| 99精品高清在线播放| 国产成人午夜精品福利| 亚洲第一无码AV无码专区| 99久久精品久久久久久清纯| 日日碰狠狠添天天爽五月婷| 特级做a爰片毛片免费看无码| 夜鲁夜鲁很鲁在线视频 视频| 欧美日韩在线视频| 精品人妻中文字幕有码在线 | 综1合AV在线播放| 婷婷久久香蕉五月综合加勒比| 久久香蕉国产线看观看猫咪av| 一区二区国产高清视频在线| 云南省| 激情五月日韩中文字幕| 国产成人精选视频在线观看不卡 |