CS,五,演算法

2021-07-04 19:47:00 字數 853 閱讀 6537

這章開始講演算法了,演算法是cs

的核心主題。在計算機能夠完成乙個任務之前,必須給出乙個演算法來精確地告訴計算機去做什麼,這裡說的演算法,是廣義上的執行步驟,並不是說你單純的

if-else

就不能叫演算法了,只要是一系列計算機執行步驟,都能稱得上是演算法。

演算法的定義:乙個可終止過程的一組有序的,無歧義的,可執行的步驟的集合。通過執行乙個演算法,總會做點什麼,演算法是抽象的,演算法的表示可能會產生歧義,大概是這個意思。這裡還說到:程式,演算法和程序既是不同的卻又是有關聯的,程式是演算法的表示,而程序又是演算法的活動。

演算法的表示:

電腦科學解決問題的途徑是建立一組嚴格定義的構件塊,利用它們來構建演算法的表示,這種構件塊稱作「原語」,賦予原語準確的定義消除了很多由於歧義造成的問題。原語的集合以及說明如何組合這些原語來表示比較複雜的想法的規則集合就構成了一種程式語言。

每個原語都有自己的語法和語義,語法是原語的符號表示,語義是指該原語的含義。

演算法的發現:

程式開發由兩個活動組成——發現潛在的演算法和以程式的方式表示演算法。演算法被設計出來是為了解決乙個給定問題,那麼給定問題的求解過程,就是演算法被發現的過程。發現問題的求解方法是一種具有藝術性的技藝,並且有章可循,另外也需要一些經驗,靈感,各種事物的聯絡等,呵呵,不在考慮之列。

接下來便介紹了幾種求解問題的方法,逐步求精,迭代結構,遞迴結構等;且給出了順序查詢,插入排序,氣泡排序,二分搜尋等演算法。這些演算法原來也寫過,後來也忘記了。反正演算法這東西,如果你遇到要求解的問題了,那麼你不得不去想一下求解過程,然後用程式表示它,最終問題的解決。

演算法有很多,經典的演算法也很多,能解決問題就好,如果是一心研究cs

,要靜下心來嘍,貌似有個

acm

CS的32演算法

奧地利符號計算研究所 research institute for symbolic computation,簡稱risc 的christoph koutschan博士在自己的頁面上發布了 一篇文章 提到他做了乙個調查,參與者大多數是計算機科學家,他請這些科學家投票選出最重要的演算法,以下是這次調查...

CS231n 學習筆記(五)

注意 在計算機上計算梯度的乙個簡單方法是有限差分法 迭代計算所有w維度,一直重複下去直到計算完dw。這種方法是數值梯度法,過程非常慢。實際上,我們會使用另一種分析梯度法,提前計算出梯度的表示式 除錯策略 使用數值梯度作為單元測試來確保解析梯度是正確的 梯度下降演算法 注意 隨機梯度下降 之前我們定義...

經典CS演算法整理REVIEW1

字串核對 解法 字串搜尋本身不難,使用暴力法也可以求解,但如何快速搜尋字串就不簡單了,傳統的字串搜尋是從關鍵字與字串的開頭開始比對,例如knuth morris pratt演演算法字串搜尋,這個方法也不錯,不過要花時間在公式計算上 boyer moore字串核對改由關鍵字的後面開始核對字串,並製作前...