現今電腦科學已經發展到比較發達的階段,不太可能一個個人學會所有的演算法,解決具體的問題的時候,有時候還是更需要透過先分析問題,然後查閱資料、思考設計、甚至是討論,最後再實現的方式去解決。
演算法也有很多不同的分支,其面向的需求不同,適用範圍不同,通常的“交流”圈子也不同,例如“圖形學演算法”、“人工智慧演算法”、“分散式演算法”,不同分支下的基本概念和思考方式都不同,分析問題和理解他人方法所需掌握的「常識」也不同。每個分支下又是每年都有大量的新論文、新方法出現,也不斷伴隨著新需求、新的應用場景。所以,掌握基本方法和概念,根據需求去深入學習相關的演算法才是比較好的選擇。
有三隻螞蟻坐在三角形的三角形。所有的螞蟻隨機挑選一個方向,並開始沿著三角形的邊緣移動。兩隻螞蟻碰撞的機率是多少?
三角形有三個頂點,每個頂點連接兩條邊,每隻螞蟻有兩個選項,每個選項有1/2的可能性。
有兩種情況,當所有的螞蟻都朝相同的方向移動時,螞蟻不會碰撞
所有螞蟻以相同順時針方向移動的可能性為1/2 * 1/2 * 1/2 = 1/8
所有螞蟻以相同的逆時針方向移動的可能性是1/2 * 1/2 * 1/2 = 1/8
不碰撞的總機率是1/8 1/8 = 1/4
所以,碰撞機率變成:1 - 1/4 = 3/4
演算法是電腦科學領域最重要的基石之一,但卻受到了國內一些程式設計師的冷落。許多學生看到一些公司在招募時要求的程式語言五花八門就產生了一種誤解,認為學習電腦就是學習各種程式語言,或者認為,學習最新的語言、技術、標準就是最好的鋪路方法。其實大家都被這些公司誤導了。程式語言雖然該學,但是學習電腦演算法和理論更重要,因為電腦演算法和理論更重要,因為電腦語言和開發平台日新月異,但萬變不離其宗的是那些演算法和理論,例如資料結構、演算法、編譯原理、電腦體系結構、關係型資料庫原理等等。在「開復學生網」上,有位同學生動地把這些基礎課程比擬為“內功”,把新的語言、技術、標準比擬為“外功”。整天趕時髦的人最後只懂得招式,沒有功力,是不可能成為高手的。
以上是螞蟻拼圖~有意思的思考鍛煉的詳細內容。更多資訊請關注PHP中文網其他相關文章!