演算法導論01—到底何為演算法(由演算法聯想到的大學教育)

來源:互聯網
上載者:User

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

定義:模型分析的一組可行的、確定的和有窮的規則。
百度百科:演算法可以理解為有基本運算及規定的運算順序所構成的完整的解題步驟。或者看成按照要求設計好的有限的確切的計算序列,並且這樣的步驟和序列可以解決一類問題。
特徵:

1、有窮性(Finiteness)
演算法的有窮性是指演算法必須能在執行有限個步驟之後終止;
2、確切性(Definiteness)
演算法的每一步驟必須有確切的定義;
3、輸入項(Input)
一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定出了初始條件;
4、輸出項(Output)
一個演算法有一個或多個輸出,以反映對輸入資料加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性(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個小時不吃不喝不動座位。這個大概就是興趣所在吧。然而,一個很大的問題就是,電腦就是數學的基礎上發展出來的,光會敲代碼不思考,不計算,總不會有大的成就的。這是什嗎?又成了矛與盾的關係了,不知不覺就想起了離散數學裡面學到的知識,用於我現在的情況,特別的恰當。

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

後悔呀,後悔,只能在以後的學習中,更多的注意理論知識(數學知識,專業知識)的靈活的結合與運用了。要真正的把它學通不是一件容易的事情,電腦本來就是一個沒有盡頭的路,正如宇宙似的,你探索的越多,你知道的就越少。如果非要這樣的話,我希望自己知道的越來越少。

最後以一句話結尾吧:學好曆數理化,走遍天下全不怕

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.