探索演算法
Ⅰ 推薦一些關於演算法的書籍
1、數據結構與演算法分析:C語言描述(適合入門)
這本書相對於演算法導論要簡單一些,更適合入門。演算法導論其實有比較強的理論性,看起來比較吃力。
《數據結構與演算法分析:C語言描述》內容簡介:書中詳細介紹了當前流行的論題和新的變化,討論了演算法設計技巧,並在研究演算法的性能、效率以及對運行時間分析的基礎上考查了一些高級數據結構,從歷史的角度和近年的進展對數據結構的活躍領域進行了簡要的概括。由於《數據結構與演算法分析:C語言描述(原書第2版)》選材新穎,方法實用,題例豐富,取捨得當。《數據結構與演算法分析:C語言描述》的目的是培養學生良好的程序設計技巧和熟練的演算法分析能力,使得他們能夠開發出高效率的程序。從服務於實踐又鍛煉學生實際能力出發,書中提供了大部演算法的C程序和偽碼常式。
2、演算法設計與分析基礎(適合入門)
作者基於豐富的教學經驗,開發了一套對演算法進行分類的新方法。這套方法站在通用問題求解策略的高度,能對現有的大多數演算法都能進行准確分類,從而使本書的讀者能夠沿著一條清晰的、一致的、連貫的思路來探索演算法設計與分析這一迷人領域。本書作為第2版,相對第1版增加了新的習題,還增加了「迭代改進」一章,使得原來的分類方法更加完善。
3.0、演算法引論:一種創造性方法(適合入門)
和普通的演算法書不同,這本書從創造性的角度出發——如果說演算法導論講的是有哪些演算法,那麼演算法引論講的就是如何創造演算法。結合前面的演算法設計與分析基礎,這本書把能解決的演算法問題數量擴大了一個數量級。
3.1 演算法競賽 | 信息學奧賽一本通(算競入門)
AlphaWA同學推薦的入門書籍,網上沒有PDF版本,自己去淘寶買嘍。
3.2 演算法競賽 | 演算法競賽進階指南(算競進階)
Ⅱ 如何理解演算法多樣化和演算法優化之間的關系
1.演算法多樣化是「群體多樣化」
演算法多樣化不是要求每個學生都想出或都掌握兩種或多種演算法。「一個學生也許只想到了一種演算法,許多學生也許就有多種演算法,實施演算法多樣法時,教師不必將每一種演算法都挖掘出來,更不能憑教師自己的想像給學生列舉出千奇百怪、不合邏輯的演算法;教師不要生硬地套出學生的多種演算法;也不要求學生都要掌握多種演算法。」也就是說演算法多樣化是指「群體多樣化」,而不是「個體多樣化」。
2.演算法多樣化與演算法優化
有教師認為演算法優化就是跟著課本走,就是「演算法唯一化」。我們說的演算法優化有兩條標准,一是盡可能地選擇通法、通則,具有一般性,而不是適用於特殊數據的特殊演算法。二是盡可能選擇便於大多數同學接受、理解、掌握的演算法。第二條標准再具體些,又可細化為兩個方面:即算理上容易解釋,容易理解;演算法上簡捷,容易操作,容易掌握。有必要指出,這里的「優化」,不同於數學上的「最優化」,它是相對而言的,但又難以或者說不必精確刻畫的,其結果還常常不是唯一的。
演算法的優化可以是演算法多樣化的一個後繼步驟,演算法只有在優化後多樣化才有意義。新課標提倡演算法的多樣化,允許學生選擇自己喜愛的演算法,使得有些教師誤在課堂教學時,片面追求形式各異的演算法。雖說培養了學生的思維能力和創新精神,但明顯地思維難度太大,導致當堂課的教學內容不能完成。並且一些思維能力欠缺的學生腦筋轉不過來,直被說得雲里霧里,教學效果不夠理想。演算法的多樣化應是學生在探索演算法的過程中自然形成的,而不是生硬地套出多種演算法。在引導學生「群體演算法多樣化」後可以問一句:「你覺得哪種方法比較好?為什麼?」這樣,學生就在不知不覺中學會優化的方法了。