算法導論01---到底何爲算法(由算法聯想到的大學教育)

到底何爲算法(由算法聯想到的大學教育)
最近在看算法導論,看了幾天了,看了前三章,看着看着,看得我腦子中愈來愈豁然開朗,這本書應該大三開始的時候看最合適,由於那時候基礎課程學完,專業課即將開始,而算法導論就是軟件上的一個銜接。 算法

那麼到底什麼是算法呢?

定義:模型分析的一組可行的、肯定的和有窮的規則。
百度百科:算法能夠理解爲有基本運算及規定的運算順序所構成的完整的解題步驟。或者當作按照要求設計好的有限的確切的計算序列,而且這樣的步驟和序列能夠解決一類問題。 數據庫

特徵:

一、有窮性(Finiteness)
算法的有窮性是指算法必須能在執行有限個步驟以後終止;
二、確切性(Definiteness)
算法的每一步驟必須有確切的定義;
三、輸入項(Input)
一個算法有0個或多個輸入,以刻畫運算對象的初始狀況,所謂0個輸入是指算法自己定出了初始條件;
四、輸出項(Output)
一個算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的算法是毫無心義的;
五、可行性(Effectiveness)
算法中執行的任何計算步驟都是能夠被分解爲基本的可執行的操做步,即每一個計算步均可以在有限時間內完成(也稱之爲有效性)。 服務器

算法的評價:

1.時間複雜度
算法的時間複雜度是指執行算法所須要的計算工做量。通常來講,計算機算法是問題規模n 的函數f(n),算法的時間複雜度也所以記作。
T(n)=Ο(f(n))
所以,問題的規模n 越大,算法執行的時間的增加率與f(n) 的增加率正相關,稱做漸進時間複雜度(Asymptotic Time Complexity)。
2.空間複雜度
算法的空間複雜度是指算法須要消耗的內存空間。其計算和表示方法與時間複雜度相似,通常都用複雜度的漸近性來表示。同時間複雜度相比,空間複雜度的分析要簡單得多。
3.正確性
算法的正確性是評價一個算法優劣的最重要的標準。
4.可讀性
算法的可讀性是指一個算法可供人們閱讀的容易程度。
5.健壯性
健壯性是指一個算法對不合理數據輸入的反應能力和處理能力,也稱爲容錯性。 數據結構

由算法學習想到的

上面的都是比較標準的定義,但是在我學習它的過程當中,由此發現了我所學的課程之間的聯繫,之前雖然有過這種聯繫,可是沒有這麼完善過,此次我花了一天時間專門的疏通了一下全部的課程,我是一名即將大四的計算機科學與技術的學生,基本上全部的課程也學的差很少了,因此呢,我就用比較通俗易懂的課程來講明一下,以避免的學弟學妹們再跟我同樣後悔就來不及了。我感受用語言描述不清楚,直接把圖畫出來,直觀一點。函數






若是你真正看懂圖了之後,你會發現,咱們大學的課程仍是很標準的,只是,分的太細了,有時候,咱們找不出跟計算機相關的聯繫,計算機總的來講,就是01代碼,不管是顯示器,仍是存儲器,硬件設計無非就是0與1,是或非而已,在這個的基礎上,衍生了一系列的封裝好功能的硬件,再經過這些硬件封裝成具備更大功能而且有軟件接口的硬件器件。再經過彙編語言,也就是最高級的硬件語言,編寫出最最基礎的C語言,固然,對於開發者而言,少不了編譯原理,繼續用C語言封裝,結合數據結構,就有了操做系統,你們應該都知道,世界上穩定性特別好的服務器的操做系統通常都是C語言編寫的。C語言高效,可預測。有了這一層的操做系統,那麼再上層就是計算機之間的相互通訊,與計算機的數據存儲相關的東西了(數據庫),而後纔有了一系列的最最上層的應用。學習


其實,我如今挺後悔的,大一的時候,雖然高數,線性,離散,機率論都學得挺不錯,但是都是爲了考試而學,沒有把它深刻的理解,沒有刻在腦子中,不能靈活運用,這個讓我很煩惱,同時我發現考研的科目,除了政治之外,數學,英語,專業課,都是將這些知識綜合起來,看書的某一瞬間,我曾想,我應該考研,這樣,就把知識融會貫通起來了。但是,我又想,都是本身的錯,本身沒有深刻的理解,若是大一就深刻理解了,那麼如今就不會後悔了,我如今的感覺就是,我特別想再把數學相關的學科,專業課相關的學科,都再學一遍(英語就不說了,看外國資料的基礎),但是,我即將大四,即將找工做,沒時間了,若是考研,我沒有那麼大的耐力,我歷來都不是一個坐着看書能超過四小時的學生,但是對於敲代碼作項目,我能夠,我能夠連續8個小時不吃不喝不動座位。這個大概就是興趣所在吧。然而,一個很大的問題就是,計算機就是數學的基礎上發展出來的,光會敲代碼不思考,不計算,總不會有大的成就的。這是什麼?又成了矛與盾的關係了,不知不覺就想起了離散數學裏面學到的知識,用於我如今的狀況,特別的恰當。

對了,大一的時候,聽過好多大三的學長說,要是考研的話,就好好把基礎知識學習好,要是不考研的話,考試能過就好了,要拿獎學金的話,考好點就好了,大學的課程也就那樣。在這裏我真想說:狗屁理論。學校又不是煞筆,爲啥給咱們開一些沒用的專業課,我當時本身也是個二筆,居然相信了。靠,如今真後悔,不能怪那個學長,只能怪我本身不求甚解罷了。但是,我不想中國的學生再被人誤導,大學裏的課程都是,理論與實踐的結合的課程,可能實踐的地方少一點,可是理論確實是很重要的,這一點無可置否。當你的基礎很好的時候,實踐能力的提升是遲早的事情,因此大學的每門課程都須要好好的學(這裏除去某黨的課),就連歷史都要好好學,讀史可使人明智,是在教你如何爲人處世。固然,歷史不只僅侷限於歷史,能夠是某人的傳記呀,等等等等。哎,其實當今社會,什麼技術呀,能力呀,都是次要的,人才是那個主力軍。千萬不要本末倒置。

後悔呀,後悔,只能在之後的學習中,更多的注意理論知識(數學知識,專業知識)的靈活的結合與運用了。要真正的把它學通不是一件容易的事情,計算機原本就是一個沒有盡頭的路,正如宇宙似的, 你探索的越多,你知道的就越少。若是非要這樣的話,我但願本身知道的愈來愈少。

最後以一句話結尾吧: 學好歷數理化,走遍天下全不怕操作系統

相關文章
相關標籤/搜索