金慶的專欄
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)
相冊
公告照片
搜索
積分與排名
積分 - 656590
排名 - 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" 錯誤(11032)
2.?SVN中邪惡的replace(10955)
3.?VS2005編譯libevent(10413)
4.?混音算法的學習與研究(10203)
5.?C調用lua腳本的效率測試(9007)
評論排行榜
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
金慶
閱讀(1950)
評論(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 © 金慶
亚洲va国产va天堂va久久
|
久久97久久97精品免视看秋霞
|
久久国产免费直播
|
91性高湖久久久久
|
久久精品国产亚洲AV影院
|
久久精品成人一区二区三区
|
一本久道久久综合狠狠爱
|
久久青青国产
|
精品无码久久久久久久动漫
|
久久夜色精品国产网站
|
精品久久久久久无码不卡
|
欧美亚洲日本久久精品
|
亚洲一区中文字幕久久
|
国产国产成人久久精品
|
93精91精品国产综合久久香蕉
|
久久男人Av资源网站无码软件
|
69国产成人综合久久精品
|
国产精品久久网
|
久久婷婷人人澡人人
|
伊人久久精品无码二区麻豆
|
久久精品国产日本波多野结衣
|
久久久噜噜噜久久
|
久久大香萑太香蕉av
|
久久er国产精品免费观看2
|
狠狠久久综合伊人不卡
|
性欧美大战久久久久久久
|
午夜精品久久久久久中宇
|
粉嫩小泬无遮挡久久久久久
|
久久久久国产视频电影
|
久久天堂AV综合合色蜜桃网
|
久久精品国产WWW456C0M
|
久久无码中文字幕东京热
|
国产日韩久久免费影院
|
精品蜜臀久久久久99网站
|
久久免费看黄a级毛片
|
日本加勒比久久精品
|
久久AⅤ人妻少妇嫩草影院
|
久久精品国产免费
|
国产精品伊人久久伊人电影
|
亚洲一区中文字幕久久
|
日本人妻丰满熟妇久久久久久
|