演算法導論 5.1-3
畫出BIASED-RANDOM真值表
輸出值 | 0 | 1 |
---|---|---|
概率 | 1-p | p |
輸出值 | 00 | 01 | 10 | 11 |
---|---|---|---|---|
概率 | (1-p)(1-p) | p(1-p) | p(1-p) | pp |
- 事件A:AVERAGE-RANDOM有返回
- 事件B:AVERAGE-RANDOM返回0
- 事件C:AVERAGE-RANDOM返回1
根據條件概率公式:P(B|A)=P(AB)/P(A)=P(兩次獨立BIASED-RANDOM返回01)/P(兩次獨立BIASE-RANDOM返回01+兩次獨立BIASE-RANDOM返回10)=p(1-p)/[p(1-p)+p(1-p)]=1/2;
同理,P(C|A)=P(AC)/P(A)=1/2
相關推薦
演算法導論 5.1-3
畫出BIASED-RANDOM真值表 輸出值 0 1 概率 1-p p 基於BIASE-RANDOM真值表,畫出獨立的兩次BIASED-RANDOM過程的真值表 輸出值 00 01 10 11 概率 (1-p)(1-p) p(1-p) p(1-p) pp 可見輸出01和10的概率是相同的,那麼可以使用如
演算法導論2.1.3
#include<iostream> using namespace std; int main() { int j; int aim = 10; int quene[10] = { 9,4,7,1,8,3,6,2,5,0 };
演算法導論 5.2-3
令X為一個隨機變數,其值等於擲n次骰子點數的綜合。令Xij對應於第i次擲骰子得到的點數是j這個事件的指示器隨機變數。所以Xij = I{第i次擲骰子得到的點數是j},並且X=∑i=1n ∑j=16 jXij 。 E(X)=E(∑i=1n ∑j=16 jXij ) = E(∑j=16 jX1j +∑j=16
演算法導論 5.1-1
證明:由於應聘者出現的順序是隨機的,所以所有應聘者的全序序列的任意一個都有可能出現。如果程式HIRE-ASSISTANT總是能決定哪一個應聘者最佳,就意味著無論應聘者全序序列中的那個序列出現,程式都可以比較出兩個應聘者誰更有資格,全序序列包含著所有兩個應聘者出現順序的可能,所以任意兩個應聘者的資格都可以給出
演算法導論 5.3-4
Armstrong教授建議使用下列過程來產生均勻隨機排列:PERMUTE-BY-CYCLIC(A)1 n <- length[A]2 offset <- RANDOM(1,n)3 for i <- 1 to n4 do dest <- i + offset5 if dest >
演算法導論 練習 2.3-1
題目: 說明合併排序在陣列A={3,41,52,26,38,57,9,49} 上的執行過程 解答: 原陣列:3,41,52,26,38,57,9,49 第一趟:3,41,26,52,38,57
5.1.3 案例精選
sin org 數據 inf utf result adl ges 郵箱 5-1 編寫函數實現字符串加密和解密,循環使用指定秘鑰,采用簡單的異或算法。 1 def crypt(source,key): 2 from itertools import c
5.1.3 網絡編程進階---查看進程ID和父進程ID
父進程 elf pycharm __init__ div run 網絡編程 %s 輸出 獲取本進程id: os.getpid() 獲取父進程id: os.getppid() from multiprocessing import Process import ti
二叉搜尋樹增刪節點《演算法導論》12.3節
向二叉搜尋樹增加一個節點是比較簡單的,每個新節點都會成為樹上的新葉子,我們要做的是從根開始,沿著一條路徑,抵達安放新葉子的正確位置。這條路徑是怎樣找到的呢? 路徑的起點自然是根節點了,把起點作為當前節點,和新節點比較大小,如果新節點較小,那麼新節點應該屬於當前節點的左子樹,於是選擇當前節點的左孩子作為新
5.1.3 子程式
5.1.3 子程式 當設計一個執行運算的機器時,我們優先設計能被運算的不同的部分共享的元件,而不是單獨的元件。 考慮這種情況:一個機器有兩個求最大公約數的運算,一個是找到暫存器A,B的內容的最大公約數, 另一個是找到暫存器C,D的內容的最大公約數。開始時我們可能設計出一個原生的求最大公約數的操作,
《演算法導論》12.3節習題
12.3-1 二叉搜尋樹insert操作的遞迴版本 void insert1(Node* pRoot, Node* pAdd) { bool bLeft = pAdd->key < pRoot->key; Node* pNextRoot = bLeft ? pRo
求1!+(1!+3!)+(1!+3!+5!)+...+(1!+3!+5!+7!+9!)的值
今天朋友面試時遇到一道演算法題,題目要求求出1!+(1!+3!)+(1!+3!+5!)+......+(1!+3!+5!+7!+9!)的值。我個人的思路是需要用到斐波那契和階乘來解決這個問題。 這道題可以分為兩步來做,先寫出求階乘的方法,然後我們根據括號就能把上面分組,其實每一組的最大數就是組數*2-1,比如
演算法訓練 5-1最小公倍數
問題描述 編寫一函式lcm,求兩個正整數的最小公倍數。 樣例輸入 一個滿足題目要求的輸入範例。 例: 3 5 樣例輸出 與上面的樣例輸入對應的輸出。 例: 資料規模和約定 輸入資料
雙向連結串列的構造(演算法4習題1.3.31)
原題:實現一個巢狀類DoubleNode用來構造雙向連結串列,其中每個節點都含有一個指向前驅元素的引用和一個指向後續元素的引用(如果不存在則為NULL)。為以下任務實現若干靜態方法:在表頭插入結點、在表尾插入結點、在表頭刪除結點、在表尾刪除結點、在指定結點之前插入新結點、在指定結點之後插入新結點、刪除指定
學習:資料結構與演算法之美(1-3)
第一課 基礎知識就像是一座大樓的地基,它決定了我們的技術高度。而要想快速做出點事情,前提條件一定是基礎能力過硬,“內功”要到位。 第二課 為什麼要學習資料結構和演算法(摘自網友極客時間留言) 直接好處是能夠寫出效能更優的程式碼, 演算法是一種解決問題的思路和方
演算法導論 10.1-2 用一個數組實現兩個棧
一、題目說明如何用一個數組A[1..n]來實現兩個棧,使得兩個棧中的元素總和不到n時,兩個都不會發生上溯。注意PUSH和POP操作的時間應為O(1)二、思考分別用陣列的兩端作為兩個棧的起點,向中間擴充套
演算法導論2.1-4 考慮n位二進位制整數相加起來的問題
考慮把兩個n位二進位制整數加起來的問題,這兩個整數分別儲存在兩個n元陣列A和B中。這兩個整數的和應按二進位制形式儲存在一個(n+1)元陣列C中。使用java程式碼實現;實現程式碼如下:引數A和B為相同長度n的整形陣列,該函式返回一個長度為n+1的陣列 private s
演算法導論5.2 指示器隨機變數
為了分析包括包括僱傭分析在內的許多演算法,我們將使用指示器隨機變數,它為概率和期望之間的轉換提供了一個便利的方法,給定一個樣本空間S和事件A,那麼事件A對應的指示器隨機變數: Xa = 1 如果A發生 0 如果A沒有發生 E[Xa] = Pr{A}在很多時候,用指示器隨機變數來
計算機演算法設計與分析課本(王曉東著)課後演算法實現題1-3 最多約數問題
問題描述: 正整數x的約數是能整除x的正整數。正整數x的約數個數記為div(x)。例如,1 2 5 10都是10的約數,且div(10)=4。設a和b是2個正整數,a<=b,找出a和b之間約數個數最多的數x。 演算法設計: 對於給定的2個正整數a<=b,計算a和b之間約數個數最多
《演算法導論(第3版)》讀書筆記(一)演算法基礎
本篇內容主要涉及《演算法導論》一書中的第二章知識,涉及的內容有插入排序和歸併排序 插入排序 對於插入排序有個很明顯的顯示生活例子來幫助我們理解,插入排序的工作原理就像打撲克牌一樣,右手從桌面上拿起一張牌,然後再左手那一堆已經按牌面大小排好序的牌找