第一章《緒論》學習筆記

2021-06-25 19:46:20 字數 2687 閱讀 1755

上資料結構這門課前,總以為這門課是和上學期學c++一樣的——那還不簡單,一樣都是程式設計麼,直到真正開始學才知道根本不是那麼回事,遠遠沒有學c++那樣的輕鬆。

仇老師讓我們寫筆記,我覺得這是很有必要的,因為很多東西不是說你理解了就會用,況且有一部分還不能理解,好記性不如爛筆頭吧。至於整理到部落格上也算是再複習一遍了。

廢話不多說了,進入正題:

1.程式設計的實質是什麼?

資料表示:將資料儲存在計算機(記憶體)中

資料處理:處理資料,設計方案(演算法)。

資料結構問題起源於程式設計。

2. 計算機求解問題:

問題→抽象出問題的模型→求模型的解

問題——數值問題、非數值問題

數 值 問 題→數學方程

非數值問題→資料結構。

3.圍棋19*19=361所以就有2^361種下法,所以人機對弈問題的實質就是人與對弈規則作鬥爭。

4.非數值問題的資料組織和處理主要內容有:

邏輯結構,儲存結構,演算法,資料處理技術。

5.資料:所有能輸入到計算機中並能被電腦程式識別和處理的符號集合。

數值資料:整數、實數等

非數值資料:圖形、圖象、聲音、文字等

資料元素:資料的基本單位,在電腦程式中通常作為乙個整體進行考慮和處理。

資料項:構成資料元素的不可分割的最小單位。

1.3  資料結構的基本概念

1.資料、資料元素、資料項之間的關係:

包含關係:資料由資料元素組成,資料元素由資料項組成。

資料元素是討論資料結構時涉及的最小資料單位,其中的資料項一般不予考慮。

2.資料結構:相互之間存在一定關係的資料元素的集合。按照視點的不同,資料結構分為邏輯結構和儲存結構。

邏輯結構:指資料元素之間邏輯關係的整體。

資料結構從邏輯上分為四類:

⑴ 集合:資料元素之間就是

「屬於同乙個集合」 ;

⑵ 線性結構:資料元素之間

存在著一對一的線性關係;

⑶ 樹結構:資料元素之間存在

著一對多的層次關係;

⑷ 圖結構:資料元素之間存在

著多對多的任意關係。

通常有兩種儲存結構:

1. 順序儲存結構:用一組連續的儲存單元依次儲存資料元素,資料元素之間的邏輯關係由元素的儲存位置來表示。(佔據儲存空間少)

2. 鏈結儲存結構:用一組任意的儲存單元儲存資料元素,資料元素之間的邏輯關係用指標來表示 。(佔據儲存空間多,但是很靈活)

1.3.2抽象資料型別

1. 資料型別(data type):一組值的集合以及定義於這個值集上的一組操作的總稱。

例如:c++中的整型變數 

2. 抽象(abstract):抽出問題本質的特徵而忽略非本質的細節。

例如: 地圖、駕駛汽車

3. 抽象資料型別(abstract data type,adt):乙個資料結構以及定義在該結構上的一組操作的總稱。

資料的操作:插入,刪除,修改,檢索,排序。

1.4 演算法及演算法分析

演算法的相關概念

1.演算法(algorithm):是對特定問題求解步驟的一種描述,是指令的有限序列。

2. 演算法的五大特性:

⑴ 輸入:乙個演算法有零個或多個輸入。

⑵ 輸出:乙個演算法有乙個或多個輸出。

⑶ 有窮性:乙個演算法必須總是在執行有窮步之後結束,且每一步都在有窮時間內完成。

⑷ 確定性:演算法中的每一條指令必須有確切的含義,對於相同的輸入只能得到相同的輸出。

⑸ 可行性:演算法描述的操作可以通過已經實現的基本操作執行有限次來實現。

演算法的描述方法——自然語言

優點:容易理解

缺點:冗長、二義性

使用方法:粗線條描述演算法思想

注意事項:避免寫成自然段

使用方法:粗線條描述演算法思想。

演算法的描述方法——流程圖

優點:流程直觀

缺點:缺少嚴密性、靈活性

使用方法:描述簡單演算法

注意事項:注意抽象層次

演算法的描述方法——程式語言

優點:能由計算機執行

缺點:抽象性差,對語言要求高

使用方法:演算法需要驗證

注意事項:將演算法寫成子函式

偽**(pseudocode):介於自然語言和程式語言之間的方法,它採用某一程式語言的基本語法,操作指令可以結合自然語言來設計。

優點:表達能力強,抽象性強,容易理解

使用方法:7 ± 2

1.4  演算法及演算法分析

度量演算法效率的方法:

事後統計:將演算法實現,測算其時間和空間開銷。

缺點:⑴ 編寫程式實現演算法將花費較多的時間和精力;

⑵ 所得實驗結果依賴於計算機的軟硬體等環境因素。

事前分析:對演算法所消耗資源的一種估算方法

演算法分析(algorithm analysis):對演算法所需要的計算機資源——時間和空間進行估算。

時間複雜性(time complexity)

空間複雜性(space complexity)

問題規模:輸入量的多少。

基本語句:是執行次數與整個演算法的執行次數成正比的操作指令

演算法分析——大o符號

定義  若存在兩個正的常數c和n0,對於任意n≥n0,都有t(n)≤c×f(n),則稱t(n)=o(f(n))

定理:若a(n)=amnm+am-1nm-1++a1n+a0是乙個m次多項式,則a(n)=o(nm)。



第一章 緒論(筆記)

程式設計的實質是資料表示和資料處理。計算甲能夠求解的問題一般可以分為數值問題和非數值問題。1.3 1 資料是資訊的載體。2 資料可分為兩類 一類是整數 實數等數值資料 另一類是文字 聲音 圖形和影象等非數值資料。3 資料元素是資料的基本大小。構成資料元素大小的不可分割的最小單位是資料項。4 資料結構...

第一章緒論筆記

資料的邏輯結構 線性表 樹 圖等資料結構,其核心是如何組織待處理的資料以及資料之間的關係 資料的儲存結構 如何將線性表,樹,圖等資料結構儲存到計算機的儲存器中,其核心是如何有效地儲存資料以及資料之間的邏輯關係。演算法 如何基於資料結構的某種儲存結構實現插入,刪除,查詢等基本操作,其核心是如何有效地處...

《機器學習》筆記 第一章緒論

p9 學習演算法自身的 歸納偏好 與問題是否相配,往往會起到決定性作用。1.5發展歷程 人工智慧的研究程序 推理期 知識期 學習期 從樣例中學習 也即是廣義的歸納學習 它涵蓋了監督學習 無監督學習等,本書大部分內容均屬於此範疇。從樣例中學習,從基於邏輯的符號學習 基於神經網路的連線主義學習 統計學習...