金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網游開發(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊
公告照片
搜索
積分與排名
積分 - 654006
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統C++網絡庫
asio 成為C++首選網絡庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11017)
2.?SVN中邪惡的replace(10939)
3.?VS2005編譯libevent(10404)
4.?混音算法的學習與研究(10184)
5.?C調用lua腳本的效率測試(9003)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優于指針(17)
5.?ACE與ASIO之間關于Socket編程的比較(16)
有難度的算法筆試題:芯片測試
有難度的算法筆試題
摘自:
http://community.csdn.net/Expert/TopicView3.asp?id=5764920
3)芯片測試:
有2k塊芯片,已知好芯片比壞芯片多。請設計算法從其中找出一片好芯片,說明你所用的比較次數上限。
其中:
好芯片和其它芯片比較時,能正確給出另一塊芯片是好還是壞。
壞芯片和其它芯片比較時,會隨機的給出好或是壞。
Vitin(衛亭)
(
):
試著回答一下第三題,不保證最快效率:
1.對N個芯片,在保證好芯片比壞芯片多的情況下,取出一塊芯片(為敘述方便,設為芯片X),與其他所有芯片做測試,記錄相互間的結果.
2.按照芯片X對其他芯片的結果,將其他芯片分成兩組:GOOD組和BAD組.
3.如果GOOD組的數目<BAD的數目,則X為壞芯片,跳到5.
4. 如果GOOD組的數目>=BAD組的數目,并且GOOD組對X的測試為good(認為X好芯片),則X確實是好芯片,算法結束(因為在N-1中,至 少半數的芯片認為X為不是壞芯片,考慮到"好芯片比壞芯片多",可歸謬證明);否則,只要有一個GOOD組芯片對X的測試為bad,則X為壞芯片,繼續.
5.X為壞芯片,故去除X,將所有芯片分成兩組:對X的測試為bad的保留,對X的測試為good的去除.考慮到所有的好芯片都保留了(它們對X的測試必為bad),所以仍然滿足"好芯片比壞芯片多"的條件.跳到1,繼續.
以上算法保證可以結束.因為如果測試出X是壞的,那么每次N至少減一.并且,因為"好芯片比壞芯片多",算法必定是在第4步結束.而不會出現芯片降到1的情況(只要初始的芯片數>=2)
題目中,初始N=2k.其復雜度在最壞的情況下測試次數(假設一次測試同時出現相互的結果,否則次數*2)為: k + (k+1) + ... + (2k-1) = 1/2 * k(3k-1) = O(k^2)
xlfddlfd(樓主請點我加分^_^不用客氣)
(
) :
下面兩個結論比較有用,先列出來。
任意拿兩片芯片互相測試,則有
1)結果都為真,則說明兩片都為真,或者都為假。
2)其他結果,則最少有一為假。
在任意偶數多的芯片里,如果好芯片多于壞芯片,將所有芯片兩兩分組,根據抽屜原理,則有
1)必有兩個好芯片分在一組。
2)同為好芯片的組數一定多于同為壞芯片的組數。
測試流程
1)將芯片兩兩分組,比如1和2,3和4。。。。2k-1和2k。互相測試,則必有結果同為真的組。
2)保留結果同為真的組,丟棄其他組。必有好芯片組多于壞芯片組。(所以當只有兩組或者一組同為真時,則必為真,測試結束)
3)結果同為真的組芯片必定同好或者同壞,所以可以丟棄一半。從所有同真組中任意取出一個丟棄另一個,組成新的測試組,繼續兩兩分組,直到同真組只有2個或者1個測試結束,堅持到最后的就是好芯片。
說 明:同真組可能會變成奇數個,當為奇數組時,任意選一組取其中一個(假設為A),在剩余組中各取一個來測試A,如果測試結果A為好芯片過半或者等于一半, 則A為好芯片,測試結束。否則A為壞芯片,判定A為好芯片的必為壞芯片,剔除后剩余部分形成新的測試組,繼續兩兩分組。。。
總的原理和淘 金差不多,剛開始好的芯片多,在每次剔除芯片時一定要保證剔除的壞芯片數量一定要多于或者等于好芯片的數量,這樣就能保證在剩余的芯片中好的一定多于壞 的。當組數為奇數時采用投票制,多于半數的投票有效(等于也有效,因為好的多于壞的,相等則被測試的一定為好的)。
因為每次最少剔除一半的芯片,所以最壞情況出現在每次只能剔除一半芯片的時候,按等比數列遞減。當有N個芯片時,測試次數為n+(n/2)+(n/4)...=2n(實際上當為奇數組時,次數會更多,不過算不過來了,省略^_^ )
Vitin(衛亭)
(
) :
xlfddlfd 的算法很好,學習一下.
這個算法比我之前的算法要快得多.
當 最壞情況是,每次都是奇數,并且每次都是壞芯片 時,測試次數(lg是以2為底的對數,N = 2k)約為 2(k + k/2 + k/4+...)-slgk = 4k - slgk = O(k),仍然是線性算法(此處的s為不大的常數(但大于1),因為在每次為奇數的情況下,實際的數目要比 k/2, k/4 之類的小,可以認為這個誤差是lgk的倍數,此外壞芯片的比較數是每次總個數-1,所以要減少大約一個lgk).
posted on 2007-09-24 15:01
金慶
閱讀(1945)
評論(0)
編輯
收藏
引用
所屬分類:
9. 其它
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
TortoiseGit is OK but GitExtensions fails
DeathVoteExpirationTimeout in Orleans
How to delete local branches of GitExtension
Clustering provider in Orleans
Why Orleans' actor is virutal
What comes after microservice?
Rust Deref coercion example
Rust Error Return Check Policy
Rust visibility
Why does Rust check borrow even in single thread
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
久久久久国产一区二区三区
|
国产精品美女久久福利网站
|
久久久久久久综合狠狠综合
|
一级做a爰片久久毛片16
|
狠狠色丁香久久综合五月
|
久久国产精品99精品国产
|
久久久久亚洲AV无码专区首JN
|
精品久久久久久久久久中文字幕
|
精品999久久久久久中文字幕
|
久久精品国产亚洲AV麻豆网站
|
亚洲国产精品无码久久98
|
亚洲国产精品高清久久久
|
久久综合精品国产二区无码
|
久久久久久综合网天天
|
婷婷五月深深久久精品
|
国产亚洲精品自在久久
|
欧美综合天天夜夜久久
|
久久久久久无码国产精品中文字幕
|
国产亚洲美女精品久久久2020
|
国产成人精品三上悠亚久久
|
国产精品久久久久久久app
|
亚洲AV无一区二区三区久久
|
国产午夜精品久久久久九九
|
精品无码久久久久久国产
|
伊人 久久 精品
|
久久99久久99精品免视看动漫
|
国产精品青草久久久久福利99
|
亚洲日本久久久午夜精品
|
国产韩国精品一区二区三区久久
|
国产成人久久久精品二区三区
|
伊人久久精品影院
|
66精品综合久久久久久久
|
久久精品极品盛宴观看
|
久久久久夜夜夜精品国产
|
精品国产日韩久久亚洲
|
久久青草国产手机看片福利盒子
|
性高朝久久久久久久久久
|
狠狠色婷婷综合天天久久丁香
|
色婷婷噜噜久久国产精品12p
|
亚洲AV无码久久精品蜜桃
|
久久国产成人亚洲精品影院
|