歸納法之名人問題

2021-05-23 00:30:43 字數 2050 閱讀 6986

黑土說,什麼名人,就是個人名!

這裡的名人,不光是個人名,還是個孤陋寡聞的傢伙呢。

名人問題

定義:在所有

n個人中,乙個被所有其他人知道但卻不知道別人的人。

如果存在這樣的名人,找出來。

判斷張三是否知道李四的唯一辦法是提問(查詢)張三:「你知道李四嗎?」。

這是找有向圖

g中的度為

|v|的匯點。如果獲得了

g的鄰接矩陣,那就是查詢

出度

=0且入度

=|v|-1

的點

但是獲得鄰接矩陣的代價太大,因為提問(查詢)是有代價的,而且建立有向圖

g的鄰接矩陣需要

n(n-1)

次提問。

圖中只能有乙個匯點,所以,只能有乙個名人。

歸納假設:存在解決

p(n-1)

的algo a

需要證明奠基步和

p(n-1)=>p(n)

1、

退化的情況出現在

n=2,顯然存在

algo a;2、

當n>2

時,增加一點v

,則產生三種情況

a)匯點在前(

n-1)點中;判斷方法是查詢是否存在v到

p(n-1)

的邊,是否存在p(n-1)

v的邊,共有

2次查詢。b)v

是匯點;

c)不存在匯點。判斷

(b)(c)

的方法是向前

(n-1)

點查詢是否存在到

v的邊,查詢v

是否有出邊,共需2(n-1)

次查詢。

這樣就已經不妙了,因為如果

t(n)=t(n-1)+o(n)

,那麼t(n)=o(n2)

,這與與使用鄰接矩陣的時間複雜度是一樣的。

p(n-1)=>p(n)

導致時間複雜度高的原因是要斷定乙個點是匯點需要判斷與其他所有點的連線情況,而反過來,斷定乙個點不是匯點要容易一些(把不是匯點的點排除後只需要檢查有可能成為匯點的點就ok了):查詢

v到v』是否有邊?若有,則

v不是匯點;若無,則

v』不是匯點。總之,無論如何問題規模都會減一。

也就是說,把問題轉化為p』(n)

:在

n個點中找到唯一

v,使得只有

v才有可能是匯點。對應的algo a'。

於是改進的證明如下:

1、退化的情況出現在

n=2,顯然存在

algo a』;2、

當n>2

時,考察任意兩點v和

v』,查詢v

到v』是否有邊?若有,則

v不是匯點;若無,則

v』不是匯點。總之,無論如何問題規模都變為

(n-1)

。根據歸納假設問題

p』(n-1)

有解,所以

p』(n)

存在。解決了

p』(n)

後,只需要查詢是否所有其他點v到

p』(n)

有邊,共需

(n-1)

次查詢。

t』(n)=t』(n-1)+1

,t(n)=t』(n)+n-1

,所以t(n)=o(n)

這個證明過程也會直接引導

algo a

的實現。

順推歸納法 順推歸納法

順推歸納法 forwards induction 編輯 什麼是順推歸納法 順推歸納法是指根據博弈方前面階段的行為,包括偏離特定均衡路徑的行為,推斷他們的思路並為後面階段博弈提供依據的分析方法。考慮的是博弈方有意識偏離子博弈精煉納什均衡和顫抖手均衡路徑的可能性,而不是偶然錯誤。編輯 順推歸納法的分析 ...

歸納法除錯

歸納是一種特殊的思考過程,可以從細節到全域性,也就是 從線索 即錯誤的症狀,可能是乙個或者多個測試用例的結果 出發,尋找線索之間的聯絡。歸納除錯的步驟 確定相關資料。除錯人員在具體的除錯工作中常常會犯乙個錯誤 未能將所有有用的資料或者症狀都考慮進去。在確定相關的資料時,我們需要列舉出所有知道程式執行...

數學歸納法

歸納 是一種從經驗事實中找出普遍特徵的認知方法。根據這個觀察,我們是不是可以大膽假設,前 n 個格仔的麥粒總數就是 2 1 呢?如果這個假設成立,那麼填滿 64 格需要的麥粒總數,就是 1 2 2 2 2 2 2 1 18446744073709551615。數學歸納法的一般步驟是這樣的 證明基本情...