導航:首頁 > 數字科學 > 數據結構需要哪些數學知識

數據結構需要哪些數學知識

發布時間:2022-11-16 12:58:27

⑴ 數據結構與演算法分析 需要什麼數學知識

離散數學,高等數學,概率論與數理統計,有一本springer出版的書,叫做計算機數學,裡麵包括了常用的數學理論,書不是特別後,但是作為科普讀一下很有幫助,也不建議買專業的數學教材,內容廣泛卻缺乏重點,難以一針見血的給你啟示。

⑵ 數據結構用到離散數學的 哪些知識

一、語言是最重要的基本功

無論側重於什麼方面,只要是通過計算機程序去最終實現的競賽,語言都是大家要
過的第一道關。亞洲賽區的比賽支持的語言包括C/C++與JAVA。筆者首先說說JAVA,眾所
周知,作為面向對象的王牌語言,JAVA在大型工程的組織與安全性方面有著自己獨特的
優勢,但是對於信息學比賽的具體場合,JAVA則顯得不那麼合適,它對於輸入輸出流的
操作相比於C++要繁雜很多,更為重要的是JAVA程序的運行速度要比C++慢10倍以上,而
競賽中對於JAVA程序的運行時限卻往往得不到同等比例的放寬,這無疑對演算法設計提出
了更高的要求,是相當不利的。其實,筆者並不主張大家在這種場合過多地運用面向對
象的程序設計思維,因為對於小程序來說這不旦需要花費更多的時間去編寫代碼,也會
降低程序的執行效率。

接著說C和C++。許多現在參加講座的同學還在上大一,C的基礎知識剛剛學完,還沒
有接觸過C++,其實在賽場上使用純C的選手還是大有人在的,它們主要是看重了純C在效
率上的優勢,所以這部分同學如果時間有限,並不需要急著去學習新的語言,只要提高
了自己在演算法設計上的造詣,純C一樣能發揮巨大的威力。

而C++相對於C,在輸入輸出流上的封裝大大方便了我們的操作,同時降低了出錯的
可能性,並且能夠很好地實現標准流與文件流的切換,方便了調試的工作。如果有些同
學比較在意這點,可以嘗試C和C++的混編,畢竟僅僅學習C++的流操作還是不花什麼時間
的。

C++的另一個支持來源於標准模版庫(STL),庫中提供的對於基本數據結構的統一
介面操作和基本演算法的實現可以縮減我們編寫代碼的長度,這可以節省一些時間。但是
,與此相對的,使用STL要在效率上做出一些犧牲,對於輸入規模很大的題目,有時候必
須放棄STL,這意味著我們不能存在「有了STL就可以不去管基本演算法的實現」的想法;
另外,熟練和恰當地使用STL必須經過一定時間的積累,准確地了解各種操作的時間復雜
度,切忌對STL中不熟悉的部分濫用,因為這其中蘊涵著許多初學者不易發現的陷阱。

通過以上的分析,我們可以看出僅就信息學競賽而言,對語言的掌握並不要求十分
全面,但是對於經常用到的部分,必須十分熟練,不允許有半點不清楚的地方,下面我
舉個真實的例子來說明這個道理——即使是一點很細微的語言障礙,都有可能釀成錯誤


在去年清華的賽區上,有一個隊在做F題的時候使用了cout和printf的混合輸出,由
於一個帶緩沖一個不帶,所以輸出一長就混亂了。只是因為當時judge team中負責F題的
人眼睛尖,看出答案沒錯只是順序不對(答案有一頁多,是所有題目中最長的一個輸出
),又看了看程序發現只是輸出問題就給了個Presentation error(格式錯)。如果審
題的人不是這樣而是直接給一個 Wrong Answer,相信這個隊是很難查到自己錯在什麼地
方的。

現在我們轉入第二個方面的討論,基礎學科知識的積累。

二、以數學為主的基礎知識十分重要

雖然被定性為程序設計競賽,但是參賽選手所遇到的問題更多的是沒有解決問題的
思路,而不是有了思路卻死活不能實現,這就是平時積累的基礎知識不夠。今年World
Final的總冠軍是波蘭華沙大學,其成員出自於數學系而非計算機系,這就是一個鮮活的
例子。競賽中對於基礎學科的涉及主要集中於數學,此外對於物理、電路等等也可能有
一定應用,但是不多。因此,大一的同學也不必為自己還沒學數據結構而感到不知從何
入手提高,把數學撿起來吧!下面我來談談在競賽中應用的數學的主要分支。

1、離散數學——作為計算機學科的基礎,離散數學是競賽中涉及最多的數學分支,
其重中之重又在於圖論和組合數學,尤其是圖論。

圖論之所以運用最多是因為它的變化最多,而且可以輕易地結合基本數據結構和許
多演算法的基本思想,較多用到的知識包括連通性判斷、DFS和BFS,關節點和關鍵路徑、
歐拉迴路、最小生成樹、最短路徑、二部圖匹配和網路流等等。雖然這部分的比重很大
,但是往往也是競賽中的難題所在,如果有初學者對於這部分的某些具體內容暫時感到
力不從心,也不必著急,可以慢慢積累。

競賽中設計的組合計數問題大都需要用組合數學來解決,組合數學中的知識相比於
圖論要簡單一些,很多知識對於小學上過奧校的同學來說已經十分熟悉,但是也有一些
部分需要先對代數結構中的群論有初步了解才能進行學習。組合數學在競賽中很少以難
題的形式出現,但是如果積累不夠,任何一道這方面的題目卻都有可能成為難題。

2、數論——以素數判斷和同餘為模型構造出來的題目往往需要較多的數論知識來解
決,這部分在競賽中的比重並不大,但只要來上一道,也足以使知識不足的人冥思苦想
上一陣時間。素數判斷和同餘最常見的是在以密碼學為背景的題目中出現,在運用密碼
學常識確定大概的過程之後,核心演算法往往要涉及數論的內容。

3、計算幾何——計算幾何相比於其它部分來說是比較獨立的,就是說它和其它的知
識點很少有過多的結合,較常用到的部分包括——線段相交的判斷、多邊形面積的計算
、內點外點的判斷、凸包等等。計算幾何的題目難度不會很大,但也永遠不會成為最弱
的題。

4、線性代數——對線性代數的應用都是圍繞矩陣展開的,一些表面上是模擬的題目
往往可以藉助於矩陣來找到更好的演算法。

5、概率論——競賽是以黑箱來判卷的,這就是說你幾乎不能動使用概率演算法的念頭
,但這也並不是說概率就沒有用。關於這一點,只有通過一定的練習才能體會。

6、初等數學與解析幾何——這主要就是中學的知識了,用的不多,但是至少比高等
數學多,我覺得熟悉一下數學手冊上的相關內容,至少要知道在哪兒能查到,還是必要
的。

7、高等數學——純粹運用高等數學來解決的題目我接觸的只有一道,但是一些題目
的敘述背景往往需要和這部分有一定聯系,掌握得牢固一些總歸沒有壞處。

以上就是競賽所涉及的數學領域,可以說范圍是相當廣的。我認識的許多人去搞信
息學的競賽就是為了逼著自己多學一點數學,因為數學是一切一切的基礎。

⑶ 數據結構需要數學知識嗎 不帶演算法

需要的很少,只是平時用到的比較簡單的公式,數據結構主要是演算法,只有好的演算法才有好的程序

⑷ 學習數據結構需要涉及到那些數學基礎知識

你這些符號有幾何、集合、數論、極限等方面的符號。我認為,你既已學編程,連下標也不懂說明數學太薄弱,那麼這些數學知識暫不宜做太深入研究。建議你找有關書籍,初步了解這些符號的意義及用法為限,先把編程的初步扛過去,將來再深入學習。

⑸ 《數據結構》這門課需要哪些數學知識

了解一門程序設計的語言,主要是理解一些演算法,不需要什麼大的數學知識的

⑹ 請教各位老師,想學數據結構和演算法需要哪些高等數學

數據結構對於數學的要求還比較低,當然說的是低級數據結構,高級點的可以說是演算法需要比較身後的集合論,微積分,離散數學了

⑺ 學習數據結構需要哪些數學知識

學習數據結構我個人認為如果將來只側重於實用,不做很深研究的話,只要掌握高中的所有數學知識就行。強調一下,雖然只需要掌握高中的數學知識,但是,你必須學的精。高考必須可以考135以上。最早的計算機模型就是由數學家提出的,所以這個標准不知道你是否覺得苛刻了點。如果這個層次都達不到。那麼你是不可能學精通的。當然,由於數學與計算機之間有著千絲萬屢的聯系,所以我還是希望你能把大學的數學知識都學好,例如離散數學,線性代數——。這樣對你的提高有百利而無一害。(這里談一點我的心得)

⑻ 數據結構的基礎知識

第一章 什麼是數據結構

1.1 基本概念和術語
1.2 數據的邏輯結構和物理結構

1.1 基本概念和術語

1.數據(data):

是對客觀事物的符號的表示,是所有能輸入到計算機中並被計算機程序處理的符號的總稱。

2.數據元素(data element):
是數據的基本單位,在計算機程序中通常作為一個整體來處理。一個數據元素由多個 數據項(data item)組成,數據 項是數據不可分割的最小單位。

3.數據結構(data structure):

是相互之間存在一種或多種特定關系的數據元素的集合。數據結構是一個二元組,記為:

data_structure=(D,S).其中D為數據元素的集合,S是D上關系的集合。

數據元素相互之間的關系稱為結構(structure)。根據數據元素之間關系的不同特性,通常由下列四類基本結構:

(1)集合:數據元素間的關系是同屬一個集合。(圖1)

(2)線性結構:數據元素間存在一對一的關系。(圖2)

(3)樹形結構:結構中的元素間的關系是一對多的關系。(圖3)

(4)圖(網)狀結構:結構中的元素間的關系是多對多的關系。(圖4)
1.2 數據的邏輯結構和物理結構
邏輯結構:數據元素之間存在的關系(邏輯關系)叫數據的邏輯結構。

物理結構:數據結構在計算機中的表示(映象)叫數據的物理結構。

一種邏輯結構可映象成不同的存儲結構:順序存儲結構和非順序存儲結構(鏈式存儲結構和散列結構)。

⑼ 學數據結構和演算法要學高數么

我學的是計算機和數學的交叉課程!總結一下,如果你不是做研究和向很前沿發展:
1.數據結構和演算法很重要。
2. 高等數學對數據結構基本沒有幫助,但並不一定非要學!離散數學有用!

3. 你看得演算法和應用的書,直接看大學教材《數據結構》就可以,通篇都是C語言的舉例,很好懂,和數學關系很小

4. 閱讀優秀的源代碼很多時候都只能理解裡面的小技巧,對作者的構思沒有系統的學過設計話你是參悟不到的,因此一邊讀代碼一邊看書都可以

另外數據結構真的不難,也不需要懂太多數學知識,其實大部分都是基礎演算法,建議你安裝一個標C的編譯器,按照教材多學多做,很快就能掌握了

現在實際上應用的數據結構專門知識其實很少,大部分都是簡單應用

⑽ 學數據結構和演算法之前要先學什麼

很顯然你首先需要會一門編程語言。數據結構可以在不同的語言下實現,你可以看常用的數據結構教材,有的基於C,有的基於JAVA,所以在學習數據結構與演算法之前,先學會一門語言是很有必要的事情。

因為數據結構書中很多內容用到的都是C語言偽代碼,如果不懂C語言的話應該是看不懂的。多了解一下點C語言、數據類型、循環分支、結構體、指針等基本知識。一般來說,學習完c語言之後,效率會比較高點,另外數學好的話對理解演算法是有好處的,動態規劃啊,決策樹啊之類的,具體的知識可以去小碼哥李明傑了解。

因為數據結構是需要編程實現的。在內容上,數據結構很大一部分是獨立的,但也有一部分與其它課程有關,比如離散數學,線性代數等,不過也沒多大影響,書上都帶有詳細介紹。數據結構理論性很強,需要多動手寫代碼,理解好原理,而且會編程實現,這兩方面都很重要。

閱讀全文

與數據結構需要哪些數學知識相關的資料

熱點內容
word中化學式的數字怎麼打出來 瀏覽:740
乙酸乙酯化學式怎麼算 瀏覽:1406
沈陽初中的數學是什麼版本的 瀏覽:1353
華為手機家人共享如何查看地理位置 瀏覽:1045
一氧化碳還原氧化鋁化學方程式怎麼配平 瀏覽:886
數學c什麼意思是什麼意思是什麼 瀏覽:1411
中考初中地理如何補 瀏覽:1300
360瀏覽器歷史在哪裡下載迅雷下載 瀏覽:703
數學奧數卡怎麼辦 瀏覽:1388
如何回答地理是什麼 瀏覽:1025
win7如何刪除電腦文件瀏覽歷史 瀏覽:1058
大學物理實驗干什麼用的到 瀏覽:1487
二年級上冊數學框框怎麼填 瀏覽:1701
西安瑞禧生物科技有限公司怎麼樣 瀏覽:974
武大的分析化學怎麼樣 瀏覽:1250
ige電化學發光偏高怎麼辦 瀏覽:1339
學而思初中英語和語文怎麼樣 瀏覽:1651
下列哪個水飛薊素化學結構 瀏覽:1425
化學理學哪些專業好 瀏覽:1488
數學中的棱的意思是什麼 瀏覽:1059