主頁 >  其他 > 條件期望求解快速排序演算法復雜度

條件期望求解快速排序演算法復雜度

2022-01-24 07:18:17 其他

1 條件期望

定義1(條件期望):給定隨機變數 X X X Y Y Y,則有如下條件期望 E [ X ] = E [ E [ X ∣ Y ] ] \mathrm{E}[X]=\mathrm{E}\left[\mathrm{E}[X|Y]\right] E[X]=E[E[XY]]如果 Y Y Y是離散隨機變數,則有 E [ X ] = ∑ y E [ X ∣ Y = y ] P { Y = y } \mathrm{E}[X]=\sum\limits_{y}\mathrm{E}[X|Y=y]\mathrm{P}\{Y=y\} E[X]=y?E[XY=y]P{Y=y}如果 Y Y Y是密度為 f Y ( y ) f_Y(y) fY?(y)的連續隨機變數,則有 E [ X ] = ∫ ? ∞ ∞ E [ X ∣ Y = y ] f Y ( y ) d y \mathrm{E}[X]=\int_{-\infty}^{\infty}\mathrm{E}[X|Y=y]f_Y(y)dy E[X]=??E[XY=y]fY?(y)dy

證明: 離散隨機變數的證明方式與連續隨機變數證明方式一致,具體的證明程序如下所示 ∑ y E [ X ∣ Y = y ] P ( Y = y ) = ∑ y ∑ x x P { X = x ∣ Y = y } P { Y = y } = ∑ y ∑ x x P { X = x , Y = y } P { Y = y } P ( Y = y ) = ∑ y ∑ x x P { X = x , Y = y } = ∑ x x ∑ y P { X = x , Y = y } = ∑ x x P { X = x } = E [ X ] \begin{aligned}\sum\limits_y \mathrm{E}[X|Y=y]\mathrm{P}(Y=y)&=\sum\limits_y\sum\limits_{x}x \mathrm{P}\{X=x|Y=y\}\mathrm{P}\{Y=y\}\\&=\sum\limits_y \sum\limits_{x}x\frac{\mathrm{P}\{X=x,Y=y\}}{\mathrm{P}\{Y=y\}}\mathrm{P}(Y=y)\\&=\sum\limits_{y}\sum\limits_xx\mathrm{P}\{X=x,Y=y\}\\&=\sum\limits_{x}x\sum\limits_{y}\mathrm{P}\{X=x,Y=y\}\\&=\sum\limits_{x}x\mathrm{P}\{X=x\}=\mathrm{E}[X]\end{aligned} y?E[XY=y]P(Y=y)?=y?x?xP{X=xY=y}P{Y=y}=y?x?xP{Y=y}P{X=x,Y=y}?P(Y=y)=y?x?xP{X=x,Y=y}=x?xy?P{X=x,Y=y}=x?xP{X=x}=E[X]?證畢,

2 快速排序演算法分析

?假設有 n n n個不同的值 x 1 , ? ? , x n x_1,\cdots,x_n x1?,?,xn?的一個集合,將它們按照遞增次序排序,完成它的一個有效的演算法是快速排序演算法,當 n = 2 n=2 n=2時,該演算法比較此二值,將它們置于合適的次序,當 n > 2 n>2 n>2時,它開始在 n n n值中隨機地選取一個,譬如 x i x_i xi?,然后將其它的 n ? 1 n-1 n?1個值與 x i x_i xi?比較,以 S i S_i Si?記小于 x i x_i xi?的元素的集合, S i ˉ \bar{S_i} Si?ˉ?記大于 x i x_i xi?的元素即集合,然后分別對集合 S i S_i Si? S i ˉ \bar{S_i} Si?ˉ?分別排序,所以,最后的次序由集合 S i S_i Si?元素的次序、 x i x_i xi?、集合 S i ˉ \bar{S_i} Si?ˉ?元素的次序排列組成,
?假定元素集合是 10 10 10 5 5 5 8 8 8 2 2 2 1 1 1 4 4 4 7 7 7,隨機選取一個(即這 7 7 7個值中的每一個選取的概率都是 1 7 \frac{1}7{} 71?),假如值 4 4 4被選取,然后將其它 6 6 6個值得每一個與 4 4 4做比較得到 { 2 , 1 } , 4 , { 10 , 5 , 8 , 7 } \{2,1\},4,\{10,5,8,7\} {2,1},4,{10,5,8,7}將集合 { 2 , 1 } \{2,1\} {2,1}排序得到 1 , 2 , 4 , { 10 , 5 , 8 , 7 } 1,2,4,\{10,5,8,7\} 1,2,4,{10,5,8,7}其次,在 { 10 , 5 , 8 , 7 } \{10,5,8,7\} {10,5,8,7}中隨機選取一個,譬如取到的是 7 7 7,而且將其它三個值與 7 7 7作比較得到 1 , 2 , 4 , 5 , 7 , { 10 , 8 } 1,2,4,5,7,\{10,8\} 1,2,4,5,7,{10,8}最后將 { 10 , 8 } \{10,8\} {10,8}得到 1 , 2 , 4 , 5 , 7 , 8 , 10 1,2,4,5,7,8,10 1,2,4,5,7,8,10該演算法有效性的一個度量是做次數的次數的期望,假定以 M n M_n Mn? n n n個不同值的一個集合的快速排序演算法的比較次數的期望,令比較次數的隨機變數為 X X X,取到的第 j j j小的值的隨機變數為 Y Y Y,則此時可以得到 M n M_n Mn?的一個遞推式 M n = ∑ j = 1 n 1 n E [ X ∣ Y ] M_n=\sum\limits_{j=1}^n \frac{1}{n}\mathrm{E}[X|Y] Mn?=j=1n?n1?E[XY]若初始的取值是第 j j j小的值,則較小的集合的容量是 j ? 1 j-1 j?1,較大的集合的容量是 n ? j n-j n?j,因此,由于對于選定的初始的取值需要作 n ? 1 n-1 n?1次比較,可以得到 M n = ∑ j = 1 n 1 n ( n ? 1 + M j ? 1 + M n ? j ) = n ? 1 + 2 n ∑ k = 1 n ? 1 M k M_n=\sum\limits_{j=1}^n\frac{1}{n}(n-1+M_{j-1}+M_{n-j})=n-1+\frac{2}{n}\sum\limits^{n-1}_{k=1}M_k Mn?=j=1n?n1?(n?1+Mj?1?+Mn?j?)=n?1+n2?k=1n?1?Mk?其中 M 0 = 0 M_0=0 M0?=0,等價于 n M n = n ( n ? 1 ) + 2 ∑ k = 1 n ? 1 M k nM_n = n(n-1)+2\sum\limits_{k=1}^{n-1}M_k nMn?=n(n?1)+2k=1n?1?Mk?為了求解上式,用 n + 1 n+1 n+1代替 n n n得到 ( n + 1 ) M n + 1 = ( n + 1 ) n + 2 ∑ k = 1 n M k (n+1)M_{n+1}=(n+1)n+2\sum\limits_{k=1}^nM_k (n+1)Mn+1?=(n+1)n+2k=1n?Mk?因此,經過相減得到 ( n + 1 ) M n + 1 ? n M n = 2 n + 2 M n (n+1)M_{n+1}-nM_n=2n+2M_n (n+1)Mn+1??nMn?=2n+2Mn?進一步則有 ( n + 1 ) M n + 1 = ( n + 2 ) M n + 2 n (n+1)M_{n+1}=(n+2)M_n+2n (n+1)Mn+1?=(n+2)Mn?+2n所以 M n + 1 n + 2 = 2 n ( n + 1 ) ( n + 2 ) + M n n + 1 \frac{M_{n+1}}{n+2}=\frac{2n}{(n+1)(n+2)}+\frac{M_n}{n+1} n+2Mn+1??=(n+1)(n+2)2n?+n+1Mn??將此式迭代給出 M n + 1 n + 2 = 2 n ( n + 1 ) ( n + 2 ) + 2 ( n ? 1 ) n ( n + 1 ) + M n ? 1 n = ? = 2 ∑ k = 0 n ? 1 n ? k ( n + 1 ? k ) ( n + 2 ? k ) \begin{aligned}\frac{M_{n+1}}{n+2}&=\frac{2n}{(n+1)(n+2)}+\frac{2(n-1)}{n(n+1)}+\frac{M_{n-1}}{n}\\&=\cdots\\&=2\sum\limits_{k=0}^{n-1}\frac{n-k}{(n+1-k)(n+2-k)}\end{aligned} n+2Mn+1???=(n+1)(n+2)2n?+n(n+1)2(n?1)?+nMn?1??=?=2k=0n?1?(n+1?k)(n+2?k)n?k??從而 M n + 1 = 2 ( n + 2 ) ∑ k = 0 n ? 1 n ? k ( n + 1 ? k ) ( n + 2 ? k ) = 2 ( n + 2 ) ∑ i = 1 n i ( i + 1 ) ( i + 2 ) , n ≥ 1 M_{n+1}=2(n+2)\sum\limits_{k=0}^{n-1}\frac{n-k}{(n+1-k)(n+2-k)}=2(n+2)\sum\limits_{i=1}^n\frac{i}{(i+1)(i+2)},\quad n\ge 1 Mn+1?=2(n+2)k=0n?1?(n+1?k)(n+2?k)n?k?=2(n+2)i=1n?(i+1)(i+2)i?,n1利用恒等式 i [ ( i + 1 ) ( i + 2 ) ] = 2 ( i + 2 ) ? 1 ( i + 1 ) \frac{i}{[(i+1)(i+2)]}=\frac{2}{(i+2)}-\frac{1}{(i+1)} [(i+1)(i+2)]i?=(i+2)2??(i+1)1?,則可以得到如下近似 M n + 1 = 2 ( n + 2 ) [ ∑ i = 1 n 2 i + 2 ? ∑ i = 1 n 1 i + 1 ] ~ 2 ( n + 2 ) [ ∫ 3 n + 2 2 x d x ? ∫ 2 n + 1 1 x d x ] = 2 ( n + 2 ) [ 2 ln ? ( n + 2 ) ? ln ? ( n + 1 ) + ln ? 2 ? 2 ln ? 3 ] = 2 ( n + 2 ) [ ln ? ( n + 2 ) + ln ? n + 2 n + 1 + ln ? 2 ? 2 ln ? 3 ] ~ 2 ( n + 2 ) ln ? ( n + 2 ) \begin{aligned}M_{n+1}&=2(n+2)\left[\sum\limits_{i=1}^n\frac{2}{i+2}-\sum\limits_{i=1}^n\frac{1}{i+1}\right]\\&\sim2(n+2)\left[\int_3^{n+2}\frac{2}{x}dx-\int_2^{n+1}\frac{1}{x}dx\right]\\&=2(n+2)[2\ln(n+2)-\ln(n+1)+\ln 2 - 2\ln 3]\\&=2(n+2)\left[\ln(n+2)+\ln\frac{n+2}{n+1}+\ln2 - 2\ln 3\right]\\&\sim 2(n+2)\ln(n+2)\end{aligned} Mn+1??=2(n+2)[i=1n?i+22??i=1n?i+11?]2(n+2)[3n+2?x2?dx?2n+1?x1?dx]=2(n+2)[2ln(n+2)?ln(n+1)+ln2?2ln3]=2(n+2)[ln(n+2)+lnn+1n+2?+ln2?2ln3]2(n+2)ln(n+2)?進而可以知道快速排序演算法的復雜度的期望是 n log ? n n\log n nlogn

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419986.html

標籤:AI

上一篇:YOLOV5 環境搭建和使用記錄

下一篇:線性模型,SVM,決策樹

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more