當前位置:首頁 » 操作系統 » 演算法儲干

演算法儲干

發布時間: 2022-09-02 09:57:34

A. 一致性hash演算法,採用哪種演算法實現比較好,比如MD5,CRC32,或者其它

環割法(一致性 hash)環割法的原理如下:

1. 初始化的時候生成分片數量 X × 環割數量 N 的固定方式編號的字元串,例如 SHARD-1-NODE-1,並計算所有 X×N 個字元串的所有 hash 值。

2. 將所有計算出來的 hash 值放到一個排序的 Map 中,並將其中的所有元素進行排序。

3. 輸入字元串的時候計算輸入字元串的 hash 值,查看 hash 值介於哪兩個元素之間,取小於 hash 值的那個元素對應的分片為數據的分片。

數據比較

下面將通過測試對環割法和跳躍法的性能及均衡性進行對比,說明 DBLE 為何使用跳躍法代替了環割法。

  • 數據源:現場數據 350595 條

  • 測試經過:

    1. 通過各自的測試方法執行對於測試數據的分片任務。

    2. 測試方法:記錄分片結果的方差;記錄從開始分片至分片結束的時間;記錄分片結果與平均數的最大差值。

    3. 由於在求模法 PartitionByString 的方法中要求分片的數量是 1024 的因數,所以測試過程只能使用 2 的指數形式進行測試,並在 PartitionByString 方法進行測試的時候不對於 MAC 地址進行截斷,取全量長度進行測試。

B. 為什麼一線互聯網公司的校招高薪都是演算法類

高端工程類崗位所需要的能力,高校很難培養出來。中低端工程類崗位,可能確實不太值錢。

。演算法類因為一些歷史遺留問題,大公司之前懂得人不多,而學校確實有些老師是行家裡手,學生也可以在某一個小領域,做到精通。

這推高了前兩年演算法領域的校招價。然而,隨著公司相關人才越來越多,演算法類的稀缺性也在下降。另外,現在很多技術比較好的組也比較認清了,高端演算法類畢業生已經不能靠論文數量,甚至已經不能靠發的會議質量了。

C. 最短路徑演算法

Dijkstra演算法,A*演算法和D*演算法

Dijkstra演算法是典型最短路演算法,用於計算一個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴展,直到擴展到終點為止。Dijkstra演算法能得出最短路徑的最優解,但由於它遍歷計算的節點很多,所以效率低。

Dijkstra演算法是很有代表性的最短路演算法,在很多專業課程中都作為基本內容有詳細的介紹,如數據結構,圖論,運籌學等等。

Dijkstra一般的表述通常有兩種方式,一種用永久和臨時標號方式,一種是用OPEN, CLOSE表方式,Drew為了和下面要介紹的 A* 演算法和 D* 演算法表述一致,這里均採用OPEN,CLOSE表的方式。

大概過程:
創建兩個表,OPEN, CLOSE。
OPEN表保存所有已生成而未考察的節點,CLOSED表中記錄已訪問過的節點。
1. 訪問路網中里起始點最近且沒有被檢查過的點,把這個點放入OPEN組中等待檢查。
2. 從OPEN表中找出距起始點最近的點,找出這個點的所有子節點,把這個點放到CLOSE表中。
3. 遍歷考察這個點的子節點。求出這些子節點距起始點的距離值,放子節點到OPEN表中。
4. 重復2,3,步。直到OPEN表為空,或找到目標點。

提高Dijkstra搜索速度的方法很多,常用的有數據結構採用Binary heap的方法,和用Dijkstra從起始點和終點同時搜索的方法。

A*(A-Star)演算法是一種啟發式演算法,是靜態路網中求解最短路最有效的方法。

公式表示為: f(n)=g(n)+h(n),
其中f(n) 是節點n從初始點到目標點的估價函數,
g(n) 是在狀態空間中從初始節點到n節點的實際代價,
h(n)是從n到目標節點最佳路徑的估計代價。

保證找到最短路徑(最優解的)條件,關鍵在於估價函數h(n)的選取:
估價值h(n)<= n到目標節點的距離實際值,這種情況下,搜索的點數多,搜索范圍大,效率低。但能得到最優解。
如果 估價值>實際值, 搜索的點數少,搜索范圍小,效率高,但不能保證得到最優解。
估價值與實際值越接近,估價函數取得就越好。
例如對於幾何路網來說,可以取兩節點間歐幾理德距離(直線距離)做為估價值,即f=g(n)+sqrt((dx-nx)*(dx-nx)+(dy-ny)*(dy-ny));這樣估價函數f在g值一定的情況下,會或多或少的受估價值h的制約,節點距目標點近,h值小,f值相對就小,能保證最短路的搜索向終點的方向進行。明顯優於Dijstra演算法的毫無無方向的向四周搜索。
conditions of heuristic
Optimistic (must be less than or equal to the real cost)
As close to the real cost as possible
主要搜索過程:
創建兩個表,OPEN表保存所有已生成而未考察的節點,CLOSED表中記錄已訪問過的節點。
遍歷當前節點的各個節點,將n節點放入CLOSE中,取n節點的子節點X,->算X的估價值->
While(OPEN!=NULL)
{
從OPEN表中取估價值f最小的節點n;
if(n節點==目標節點) break;
else
{
if(X in OPEN) 比較兩個X的估價值f //注意是同一個節點的兩個不同路徑的估價值
if( X的估價值小於OPEN表的估價值 )
更新OPEN表中的估價值; //取最小路徑的估價值
if(X in CLOSE) 比較兩個X的估價值 //注意是同一個節點的兩個不同路徑的估價值
if( X的估價值小於CLOSE表的估價值 )
更新CLOSE表中的估價值; 把X節點放入OPEN //取最小路徑的估價值
if(X not in both)
求X的估價值;
並將X插入OPEN表中; //還沒有排序
}
將n節點插入CLOSE表中;
按照估價值將OPEN表中的節點排序; //實際上是比較OPEN表內節點f的大小,從最小路徑的節點向下進行。
}

A*演算法和Dijistra演算法的區別在於有無估價值,Dijistra演算法相當於A*演算法中估價值為0的情況。

動態路網,最短路演算法 D*A* 在靜態路網中非常有效(very efficient for static worlds),但不適於在動態路網,環境如權重等不斷變化的動態環境下。

D*是動態A*(D-Star,Dynamic A*) 卡內及梅隆機器人中心的Stentz在1994和1995年兩篇文章提出,主要用於機器人探路。是火星探測器採用的尋路演算法。

主要方法:
1.先用Dijstra演算法從目標節點G向起始節點搜索。儲存路網中目標點到各個節點的最短路和該位置到目標點的實際值h,k(k為所有變化h之中最小的值,當前為k=h。每個節點包含上一節點到目標點的最短路信息1(2),2(5),5(4),4(7)。則1到4的最短路為1-2-5-4。
原OPEN和CLOSE中節點信息保存。
2.機器人沿最短路開始移動,在移動的下一節點沒有變化時,無需計算,利用上一步Dijstra計算出的最短路信息從出發點向後追述即可,當在Y點探測到下一節點X狀態發生改變,如堵塞。機器人首先調整自己在當前位置Y到目標點G的實際值h(Y),h(Y)=X到Y的新權值c(X,Y)+X的原實際值h(X).X為下一節點(到目標點方向Y->X->G),Y是當前點。k值取h值變化前後的最小。
3.用A*或其它演算法計算,這里假設用A*演算法,遍歷Y的子節點,點放入CLOSE,調整Y的子節點a的h值,h(a)=h(Y)+Y到子節點a的權重C(Y,a),比較a點是否存在於OPEN和CLOSE中,方法如下:
while()
{
從OPEN表中取k值最小的節點Y;
遍歷Y的子節點a,計算a的h值 h(a)=h(Y)+Y到子節點a的權重C(Y,a)
{
if(a in OPEN) 比較兩個a的h值
if( a的h值小於OPEN表a的h值 )
{ 更新OPEN表中a的h值;k值取最小的h值
有未受影響的最短路經存在
break;
}
if(a in CLOSE) 比較兩個a的h值 //注意是同一個節點的兩個不同路徑的估價值
if( a的h值小於CLOSE表的h值 )
{
更新CLOSE表中a的h值; k值取最小的h值;將a節點放入OPEN表
有未受影響的最短路經存在
break;
}
if(a not in both)
將a插入OPEN表中; //還沒有排序
}
放Y到CLOSE表;
OPEN表比較k值大小進行排序;
}
機器人利用第一步Dijstra計算出的最短路信息從a點到目標點的最短路經進行。

D*演算法在動態環境中尋路非常有效,向目標點移動中,只檢查最短路徑上下一節點或臨近節點的變化情況,如機器人尋路等情況。對於距離遠的最短路徑上發生的變化,則感覺不太適用。

D. 都快2021年了,演算法崗位應該怎樣准備面試

說到演算法崗位,現在網上的第一反應可能就是內卷,演算法崗位也號稱是內卷最嚴重的崗位。針對這個問題,其實之前我也有寫過相關的文章。這個崗位競爭激烈不假,但我個人覺得稱作內卷有些過了。就我個人的感覺,這幾年的一個大趨勢是從迷茫走向清晰。

早在2015年我在阿里媽媽實習的時候,那個時候我覺得其實對於演算法工程師這個崗位的招聘要求甚至包括工作內容其實業內是沒有一個統一的標準的。可以認為包括各大公司其實對這個崗位具體的工作內容以及需要的候選人的能力要求都不太一致,不同的面試官有不同的風格,也有不同的標准。

我舉幾個例子,第一個例子是我當初實習面試的時候,因為是本科生,的確對機器學習這個領域了解非常非常少,可以說是幾乎沒有。但是我依然通過了,通過的原因也很簡單,因為有acm的獲獎背景,面試的過程當中主要也都是一些演算法題,都還算是答得不錯。但是在交叉面試的時候,一位另一個部門的總監就問我有沒有這塊的經驗?我很明確地說了,沒有,但是我願意學。

接著他告訴我,演算法工程師的工作內容主要和機器學習相關,因此機器學習是基本的。當時我就覺得我涼了,然而很意外地是還是通過了面試。

核心能力

由於我已經很久沒有接觸校招了,所以也很難說校招面試應該怎麼樣准備,只能說說如果是我來招聘,我會喜歡什麼樣的學生。也可以理解成我理解的一個合格優秀的演算法工程師應該有的能力。

模型理解

演算法工程師和模型打交道,那麼理解模型是必須的。其實不用說每一個模型都精通,這沒有必要,面試的時候問的模型也不一定用得到。但更多地是看重這個人在學習的時候的習慣,他是淺嘗輒止呢,還是會刨根究底,究竟能夠學到怎樣的地步。

在實際的工作當中我們可能會面臨各種各樣的情況,比如說新加了特徵但是沒有效果,比如升級了模型效果反而變差了等等,這些情況都是有可能發生的。當我們遇到這些情況之後,需要我們根據已知的信息來推理和猜測導致的原因從而針對性的採取相應的手段。因此這就需要我們對當前的模型有比較深入地了解,否則推導原因做出改進也就無從談起。

所以面試的時候問起哪個模型都不重要,重要的是你能不能體現出你有過深入的研究和理解。

數據分析

演算法工程師一直和數據打交道,那麼分析數據、清洗數據、做數據的能力也必不可少。說起來簡單的數據分析,這當中其實牽扯很多,簡單來說至少有兩個關鍵點。

第一個關鍵點是處理數據的能力,比如SQL、hive、spark、MapRece這些常用的數據處理的工具會不會,會多少?是一個都不會呢,還是至少會一點。由於各個公司的技術棧不同,一般不會抱著候選人必須剛好會和我們一樣的期待去招人,但是候選人如果一無所知肯定也是不行的。由於學生時代其實很少接觸這種實踐的內容,很多人對這些都一無所知,如果你會一兩個,其實就是加分項。

第二個關鍵點是對數據的理解力,舉個簡單的例子,比如說現在的樣本訓練了模型之後效果不好,我們要分析它的原因,你該怎麼下手?這個問題日常當中經常遇到,也非常考驗演算法工程師對數據的分析能力以及他的經驗。數據是水,模型是船,我們要把船駛向遠方,只懂船隻構造是不行的,還需要對水文、天象也有了解。這樣才能從數據當中捕捉到trick,對一些現象有更深入的看法和理解。

工程能力

雖然是演算法工程師,但是並不代表工程能力不重要,相反工程能力也很重要。當然這往往不會成為招聘的硬性指標, 比如考察你之前做過什麼工程項目之類的。但是會在你的代碼測試環節有所體現,你的代碼風格,你的編碼能力都是你面試的考察點之一。

並不只是在面試當中如此,在實際工作當中,工程能力也很關鍵。往小了說可以開發一些工具、腳本方便自己或者是團隊當中其他人的日常工作,往大了說,你也可以成為團隊當中的開發擔當,負責其團隊當中最工程的工作。比如說復現一篇paper,或者是從頭擼一個模型。這其實也是一種差異化競爭的手段,你合理地負擔起別人負擔不了的工作,那麼自然就會成為你的業績。

時代在變化,行業在發展,如今的校招會問些什麼早已經和當年不同了。但不管怎麼說,這個崗位以及面試官對於人才的核心訴求幾乎是沒有變過的,我們從核心出發去構建簡歷、准備面試,相信一定可以有所收獲。

E. 高中數學必修三知識點

一個人的知識面是一個圓圈,知識儲備越多,圓圈越大,接觸到的面積便越廣闊,便能掌握和窺視更多的機會。下面是由我為大家整理的高中數學必修三知識點,僅供參考,歡迎大家閱讀。

高中數學必修三知識點1

演算法初步

1:演算法的概念

(1)演算法概念:在數學上,現代意義上的「演算法」通常是指可以用計算機來解決的某一類問題是程序或步驟,這些程序或步驟必須是明確和有效的,而且能夠在有限步之內完成.

(2)演算法的特點:

圖片有限性:一個演算法的步驟序列是有限的,必須在有限操作之後停止,不能是無限的.

圖片確定性:演算法中的每一步應該是確定的並且能有效地執行且得到確定的結果,而不應當是模稜兩可.

圖片順序性與正確性:演算法從初始步驟開始,分為若干明確的步驟,每一個步驟只能有一個確定的後繼步驟,前一步是後一步的前提,只有執行完前一步才能進行下一步,並且每一步都准確無誤,才能完成問題.

圖片不唯一性:求解某一個問題的解法不一定是唯一的,對於一個問題可以有不同的演算法.

圖片普遍性:很多具體的問題,都可以設計合理的演算法去解決,如心算、計算器計算都要經過有限、事先設計好的步驟加以解決.

2: 程序框圖

(1)程序框圖基本概念:

圖片程序構圖的概念:程序框圖又稱流程圖,是一種用規定的圖形、指向線及文字說明來准確、直觀地表示演算法的圖形。

一個程序框圖包括以下幾部分:表示相應操作的程序框;帶箭頭的流程線;程序框外必要文字說明。

圖片構成程序框的圖形符號及其作用

程序框

名稱

功能

圖片

起止框

表示一個演算法的起始和結束,是任何流程圖不可少的。

圖片

輸入、輸出框

表示一個演算法輸入和輸出的信息,可用在演算法中任何需要輸入、輸出的位置。

圖片

圖片

處理框

賦值、計算,演算法中處理數據需要的算式、公式等分別寫在不同的用以處理數據的處理框內。

判斷框

判斷某一條件是否成立,成立時在出口處標明「是」或「Y」;不成立時標明「否」或「N」。

3:演算法的三種基本邏輯結構:順序結構、條件結構、循環結構。

(1)順序結構:順序結構是最簡單的演算法結構,語句與語句之間,框與框之間是按從上到下的順序進行的,它是由若干個依次執行的處理步驟組成的,它是任何一個演算法都離不開的一種基本演算法結構。

(2)條件結構:條件結構是指在演算法中通過對條件的判斷根據條件是否成立而選擇不同流向的

演算法結構。

(3)循環結構:在一些演算法中,經常會出現從某處開始,按照一定條件,反復執行某一處理步驟的情況,這就是循環結構,反復執行的處理步驟為循環體,顯然,循環結構中一定包含條件結構。

高中數學必修三知識點2

統計

2.1.1簡單隨機抽樣

1.總體和樣本

在統計學中,把研究對象的全體叫做總體.把每個研究對象叫做個體.把總體中個體的總數叫做總體容量.為了研究總體 的有關性質,一般從總體中隨機抽取一部分: 研究,我們稱它為樣本.其中個體的個數稱為樣本容量.

2.簡單隨機抽樣,也叫純隨機抽樣。

就是從總體中不加任何分組、劃類、排隊等,完全隨機地抽取調查單位。特點是:每個樣本單位被抽中的可能性相同(概率相等),樣本的每個單位完全獨立,彼此間無一定的關聯性和排斥性。簡單隨機抽樣是 其它 各種抽樣形式的基礎。通常只是在總體單位之間差異程度較小和數目較少時,才採用這種 方法 。

3.簡單隨機抽樣常用的方法:

(1)抽簽法;⑵隨機數表法;⑶計算機模擬法;⑷使用統計軟體直接抽取。

在簡單隨機抽樣的樣本容量設計中,主要考慮:①總體變異情況;②允許誤差范圍;③概率保證程度。

4.抽簽法:

(1)給調查對象群體中的每一個對象編號;

(2)准備抽簽的工具,實施抽簽

(3)對樣本中的每一個個體進行測量或調查

例:請調查你所在的學校的學生做喜歡的體育活動情況。

5.隨機數表法:

例:利用隨機數表在所在的班級中抽取10位同學參加某項活動。

2.1.2系統抽樣

1.系統抽樣(等距抽樣或機械抽樣):

把總體的單位進行排序,再計算出抽樣距離,然後按照這一固定的抽樣距離抽取樣本。第一個樣本採用簡單隨機抽樣的辦法抽取。

K(抽樣距離)=N(總體規模)/n(樣本規模)

前提條件:總體中個體的排列對於研究的變數來說,應是隨機的,即不存在某種與研究變數相關的規則分布。可以在調查允許的條件下,從不同的樣本開始抽樣,對比幾次樣本的特點。如果有明顯差別,說明樣本在總體中的分布承某種循環性規律,且這種循環和抽樣距離重合。

2.系統抽樣,即等距抽樣是實際中最為常用的抽樣方法之一。因為它對抽樣框的要求較低,實施也比較簡單。更為重要的是,如果有某種與調查指標相關的輔助變數可供使用,總體單元按輔助變數的大小順序排隊的話,使用系統抽樣可以大大提高估計精度。

2.1.3分層抽樣

1.分層抽樣(類型抽樣):

先將總體中的所有單位按照某種特徵或標志(性別、年齡等)劃分成若干類型或層次,然後再在各個類型或層次中採用簡單隨機抽樣或系用抽樣的辦法抽取一個子樣本,最後,將這些子樣本合起來構成總體的樣本。

兩種方法:

1.先以分層變數將總體劃分為若干層,再按照各層在總體中的比例從各層中抽取。

2.先以分層變數將總體劃分為若干層,再將各層中的元素按分層的順序整齊排列,最後用系統抽樣的方法抽取樣本。

2.分層抽樣是把異質性較強的總體分成一個個同質性較強的子總體,再抽取不同的子總體中的樣本分別代表該子總體,所有的樣本進而代表總體。

分層標准:

(1)以調查所要分析和研究的主要變數或相關的變數作為分層的標准。

(2)以保證各層內部同質性強、各層之間異質性強、突出總體內在結構的變數作為分層變數。

(3)以那些有明顯分層區分的變數作為分層變數。

3.分層的比例問題:

(1)按比例分層抽樣:根據各種類型或層次中的單位數目占總體單位數目的比重來抽取子樣本的方法。

(2)不按比例分層抽樣:有的層次在總體中的比重太小,其樣本量就會非常少,此時採用該方法,主要是便於對不同層次的子總體進行專門研究或進行相互比較。如果要用樣本資料推斷總體時,則需要先對各層的數據資料進行加權處理,調整樣本中各層的比例,使數據恢復到總體中各層實際的比例結構。

2.2.2用樣本的數字特徵估計總體的數字特徵

1、本均值:

2、樣本標准差:

3.用樣本估計總體時,如果抽樣的方法比較合理,那麼樣本可以反映總體的信息,但從樣本得到的信息會有偏差。在隨機抽樣中,這種偏差是不可避免的。

雖然我們用樣本數據得到的分布、均值和標准差並不是總體的真正的分布、均值和標准差,而只是一個估計,但這種估計是合理的,特別是當樣本量很大時,它們確實反映了總體的信息。

4.(1)如果把一組數據中的每一個數據都加上或減去同一個共同的常數,標准差不變

(2)如果把一組數據中的每一個數據乘以一個共同的常數k,標准差變為原來的k倍

(3)一組數據中的最大值和最小值對標准差的影響,區間 的應用;

「去掉一個最高分,去掉一個最低分」中的科學道理

2.3.2兩個變數的線性相關

1、概念:

(1)回歸直線方程

(2)回歸系數

2.最小二乘法

3.直線回歸方程的應用

(1)描述兩變數之間的依存關系;利用直線回歸方程即可定量描述兩個變數間依存的數量關系

(2)利用回歸方程進行預測;把預報因子(即自變數x)代入回歸方程對預報量(即因變數Y)進行估計,即可得到個體Y值的容許區間。

(3)利用回歸方程進行統計控制規定Y值的變化,通過控制x的范圍來實現統計控制的目標。如已經得到了空氣中NO2的濃度和汽車流量間的回歸方程,即可通過控制汽車流量來控制空氣中NO2的濃度。

4.應用直線回歸的注意事項

(1)做回歸分析要有實際意義;

(2)回歸分析前,最好先作出散點圖;

(3)回歸直線不要外延。

高中數學必修三知識點3

概 率

3.1.1 —3.1.2隨機事件的概率及概率的意義

1、基本概念:

(1)必然事件:在條件S下,一定會發生的事件,叫相對於條件S的必然事件;

(2)不可能事件:在條件S下,一定不會發生的事件,叫相對於條件S的不可能事件;

(3)確定事件:必然事件和不可能事件統稱為相對於條件S的確定事件;

(4)隨機事件:在條件S下可能發生也可能不發生的事件,叫相對於條件S的隨機事件;

(5)頻數與頻率:在相同的條件S下重復n次試驗,觀察某一事件A是否出現,稱n次試驗中事件A出現的次數nA為事件A出現的頻數;稱事件A出現的比例fn(A)=為事件A出現的概率:對於給定的隨機事件A,如果隨著試驗次數的增加,事件A發生的頻率fn(A)穩定在某個常數上,把這個常數記作P(A),稱為事件A的概率。

(6)頻率與概率的區別與聯系:隨機事件的頻率,指此事件發生的次數nA與試驗總次數n的比值 ,它具有一定的穩定性,總在某個常數附近擺動,且隨著試驗次數的不斷增多,這種擺動幅度越來越小。我們把這個常數叫做隨機事件的概率,概率從數量上反映了隨機事件發生的可能性的大小。頻率在大量重復試驗的前提下可以近似地作為這個事件的概率

3.1.3概率的基本性質

1、基本概念:

(1)事件的包含、並事件、交事件、相等事件

(2)若A∩B為不可能事件,即A∩B=ф,那麼稱事件A與事件B互斥;

(3)若A∩B為不可能事件,A∪B為必然事件,那麼稱事件A與事件B互為對立事件;

(4)當事件A與B互斥時,滿足加法公式:P(A∪B)= P(A)+ P(B);若事件A與B為對立事件,則A∪B為必然事件,所以P(A∪B)= P(A)+ P(B)=1,於是有P(A)=1—P(B)

2、概率的基本性質:

1)必然事件概率為1,不可能事件概率為0,因此0≤P(A)≤1;

2)當事件A與B互斥時,滿足加法公式:P(A∪B)= P(A)+ P(B);

3)若事件A與B為對立事件,則A∪B為必然事件,所以P(A∪B)= P(A)+ P(B)=1,於是有P(A)=1—P(B);

4)互斥事件與對立事件的區別與聯系,互斥事件是指事件A與事件B在一次試驗中不會同時發生,其具體包括三種不同的情形:(1)事件A發生且事件B不發生;(2)事件A不發生且事件B發生;(3)事件A與事件B同時不發生,而對立事件是指事件A與事件B有且僅有一個發生,其包括兩種情形;(1)事件A發生B不發生;(2)事件B發生事件A不發生,對立事件互斥事件的特殊情形。

3.2.1 —3.2.2古典概型及隨機數的產生

1、(1)古典概型的使用條件:試驗結果的有限性和所有結果的等可能性。

(2)古典概型的解題步驟;

①求出總的基本事件數;

②求出事件A所包含的基本事件數,然後利用公式P(A)=

3.3.1—3.3.2幾何概型及均勻隨機數的產生

1、基本概念:

(1)幾何概率模型:如果每個事件發生的概率只與構成該事件區域的長度(面積或體積)成比例,則稱這樣的概率模型為幾何概率模型;

(2)幾何概型的概率公式:

P(A)=;

(3)幾何概型的特點:1)試驗中所有可能出現的結果(基本事件)有無限多個;2)每個基本事件出現的可能性相等。

高中數學必修三知識點相關 文章 :

★ 高中數學必修三重點知識點復習

★ 高一數學必修3各章知識點總結

★ 高中數學必修三目錄人教版

★ 高中數學必修三公式匯總

★ 高中數學必修3隨機抽樣知識點

★ 高三數學必修三知識點總復習資料

★ 高中必修三數學知識點

★ 高二數學必修三第三章知識點總結

★ 北師大高中數學必修3知識點

var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm..com/hm.js?"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

F. 金融學專業與建築學專業比較

在我看來,兩個專業都好,就業前景都不錯的,至於建築學需要數理知識多一些,偏理工科,金融學則偏文科多一些,但是數理知識也不能少,像利率,股票,債券等等計算也要會,就看你個人喜歡。至於薪酬,我覺得要看你以後進的公司,銀行,以及你的就職的職位,金融學如果之後在銀行的話工資穩定,保險也好,不過學建築的話學好了一張設計圖也很值錢。你喜歡什麼就學什麼,興趣最好,學好了就下定決心去學,我也是理工科的但是目前學的是金融學,我喜歡和人打交道,專業也不差,加油!

G. 演算法與邏輯這2個重要概念究竟是哪一門學科領域專門學習的內容

1.問:做哲學為什麼需要學習邏輯?答:簡單地說,哲學是一門學科,它提供的是理論,它要通過說理、通過論證使人接受或者反駁某種觀點、理論,這就需要有正確的論證。邏輯研究有效推理,就是提供正確論證的基礎。實際上,凡是理論,用推理,講論證,都離不開邏輯。從這點看,哲學與其他「學」相同,所以邏輯是基礎學科。但是哲學與其他學科相比,有兩個特點,這使得這哲學中論證更為重要,因而邏輯的作用也更為重要。第一個特點,哲學不是經驗科學。盡管經驗可以給我們提供某些啟示,來自於經驗的知識可以作為哲學思考的某種根據,但是哲學命題不能通過經驗來驗證,不能做實驗,所以,一個哲學理論的「正確性」(是否可接受),幾乎只能靠論證來顯示。歷史上,一些哲學理論後來不被接受了,以另外的形式出現了,是因為發現原來論證有問題,對原來的理論有修正,有新的論證;也有一些理論一開始人們不喜歡,如休謨的經驗論,後來卻不得不接受(當然不是所有人都接受),因為它的論證沒法反駁,有人甚至是樂於接受,因為認為它的論證好。第二個特點,哲學與其他學科不同,它要思考「終極」問題,即各門具體學科都不研究或無法研究的問題,比如什麼是物質,什麼是實在,什麼是精神等本體論和認識論的問題。對這類問題的思考,會使論證更加困難。學過亞里斯多德邏輯,我們知道,有屬加種差的定義。例如,人是某種動物,動物是某種生物,這就是屬加種差的定義對什麼是人和動物的回答。如果繼續追問,什麼是生物,大概還可以說,生物是某種物質,但是如果再問什麼是物質?至少按這種方式已不能回答,需要有上一層的概念體系。一般來說,探求這樣的終極問題,概念體系不容易建立,而且容易出現某種循環,比如康德二律背反那樣的東西。在對這樣的問題進行思考時,在對這些問題的觀點論證、提出相應理論時,我們應該遵從什麼法則?有什麼規律?這些都對論證,也是對邏輯,提出了更高的要求。我們知道,現在我們所說的邏輯學產生於古希臘,始於亞里斯多德。為什麼邏輯學產生於古希臘,有幾個原因。一是民主政治,導致論辯風盛行。要辯論,要說理,就要講邏輯。二是歐幾里得幾何學,提供了一個理論應該如何應用邏輯的典範。還有一個非常重要的原因,就是哲學研究。我認為是亞里斯多德主要是在其哲學研究中,也是為了更好地研究哲學,建立了邏輯學。他對於(事物)本質問題的思考等,使他提出上面提到的定義理論,建立了三段論邏輯。從這段歷史來看,可以說,因為哲學和論證的關系,對邏輯提出了更高的要求,所以邏輯學才如此這般地產生了。所以,邏輯從一開始,就和哲學有密不可分的關系。以上所說的中心意思是,哲學的生命力在於論證,我們的哲學觀點和理論可以不同,但是論證方法必須是相同的,不論自己思考問題還是與人交流,都需要有公共的論證平台,而這個平台應該、也只能由邏輯來搭建。在今天,哲學已經大大發展,但是哲學和邏輯的基本關系沒有改變。只是今天的哲學需要什麼樣的邏輯?這是個有意思的問題,亞里斯多德邏輯顯然完全不夠了,需要今天的哲學家和邏輯學家共同關注。關於邏輯和哲學的關系,當年王浩來北大講學時還提出一種觀點。大意是,關於哲學問題的基本觀點,大家很難統一。對此我們可以採取公理化的方法,各自從自己的基本觀點出發,建立相應的理論系統,類似於古典數學和直覺主義數學。我認為這當然不是哲學研究的全部,但應該也是哲學研究的一個重要方面。如何使自己的理論更嚴密,需要有公理化的思想和方法。歷史上斯賓諾莎曾經做過倫理學的公理化研究,大概不是很成功。今天邏輯學的發展是否對此提供了新的基礎?這就需要學習現代邏輯。2.問:中國哲學也需要邏輯嗎?答:回答這個問題,首先要對「邏輯」這個概念作點說明。我們現在所說的邏輯,指的是上面提到的產生於古希臘的邏輯。就連「邏輯」一詞都是從古希臘語到英語、再到漢語譯音而來。為什麼要這樣,因為中國自己的文化中沒有產生出西方邏輯學意義上的邏輯學。中國古代有名辨學等一些在今天被人們作為中國邏輯史研究對象的理論或學說。從哲學和邏輯的關系看,如果說古希臘哲學有亞里斯多德邏輯與之對應,那麼中國哲學是否也可以說有名辨學這樣的學說與之對應?有這個背景,再看我們的問題,「中國哲學也需要邏輯嗎」,應該是,研究中國哲學或中國哲學研究需要西方的邏輯學嗎?這里有兩個問題。如果是研究中國哲學,即以中國哲學為研究的對象,提出自己的研究成果,提出相應的理論和觀點,那麼,與其他研究類似,也要分析、推理、論證,當然也離不開西方的邏輯學。因為只有西方傳統的邏輯學才在今天成為各學科的基礎。但是,如果是做中國哲學研究,或中國哲學式的研究,即用中國哲學的方法研究中國哲學的問題,比如類似於老子,孔子的研究,是否要用西方的邏輯學,我還看不出有這個必要。從西方邏輯學的觀點看,今天仍然難以完全說清中國的古代哲人究竟是用什麼邏輯思考問題的。這個說法需要作點解釋。中國哲學和西方哲學有很大的區別。這一點,從各自關心的問題和研究問題的方式可以看出來。西方哲學開始關心的問題是世界的本源是什麼,這個關心的目的是要把面對的萬事萬物拆開,找基本的組成部分,或面對復雜紛呈的世界找出基本的性質,再將它們的組合起來,希望從這里說明一切現象,同時也獲得了改造自然的手段。從簡單的、基本的部分或性質開始,通過組合,到說明各種復雜現象,解決復雜問題,這就是西方哲學的精神,也是西方邏輯的精神,他們在這個探討過程中建立了邏輯學,而且也是在這個過程中建立了西方科學。西方的哲學、邏輯學、科學屬於同一個文化體系。中國哲學也有關心世界本源的部分,但地是從社會的角度考慮問題,探討社會的秩序、和諧,講究天人合一,同時也是為個人的自我修養和人生指導提供依據。從世界和社會的宏觀出發到個人的修養,從個人的修養再到社會的和諧和秩序,這裡面有許多非組合的東西,與西方邏輯的精神從文化淵源上看有根本的區別。所以,在這個問題上,我倒是不覺得中國哲學式的研究要用到西方的邏輯學。說到這里,插一句,我想中國哲學的邏輯是什麼,這也許是個更有趣的問題。顯然這需要中國哲學和邏輯學兩方面的結合才有可能研究。當然,今天也很難有人還會按古人的方式去思考他們的哲學問題。不論從學習階段就受到的訓練,還是到後來的學術規范和科研體制,都決定了不會再出老子和孔子那樣的思想家。現在作為學術的最基本要求是要說理,要論證,要交流,還是上面說到的,要有公共的論證平台。從這個意義上說,中國哲學大概也需要西方的邏輯學。3.問:傳統邏輯和現代邏輯的區別是什麼?答:我注意到你們的幾個類似問法或問題,因為你們的采訪在我們中心(北京大學邏輯、語言與認知研究中心)的網上登了出來,而且有了一段時間。這些問題是:(1)普通邏輯和現代邏輯的區別是什麼?(2)數理邏輯和普通邏輯有什麼區別?(3)邏輯學導論和一階邏輯的區別是什麼?還有現在的問題,(4)傳統邏輯和現代邏輯的區別是什麼?我想先做一點說明,也是澄清。這里涉及到關於邏輯的一些名詞。首先,邏輯是一種客觀對象,邏輯學是關於這個對象的科學,就像力是一種客觀對象,力學是關於力這種對象的科學一樣。「邏輯」有時也指邏輯學。邏輯本身沒有現代和傳統之分,也沒有普通和不普通之分,只是邏輯學,作為人們對邏輯這個對象研究的成果,受到歷史條件的限制,才有傳統和現代之分,有不同的歷史形態。「現代邏輯」和「傳統邏輯」指的就是這種意義上的邏輯學。關於「普通邏輯」。首先,從對象的層次看,剛才說了,沒有普通和不普通之分,也就是說沒有普通邏輯這種邏輯,其次,從研究的角度看,也沒有對邏輯這種對象的「普通」的研究,所以,是既沒有普通邏輯(這種邏輯),也沒有普通邏輯學。「普通邏輯」只能是課程的名稱,類似於「普通物理」。這一點也是王憲鈞先生當年一再強調的。拿「普通邏輯」和「普通物理」相比,也是王先生舉的例子。為什麼要強調這一點,因為「普通邏輯」叫得多了,有一種誤解,把普通邏輯也當成了一種邏輯或一種邏輯學,其實,這只是一門課。關於「一階邏輯」,從對象的層次看,有這樣一種邏輯。關於這種邏輯的理論等是一階邏輯學,通常也稱為「一階邏輯」。此外,還有專門的課程講授一階邏輯學,所以它還可以是課程的名稱。「數理邏輯」與此類似。在上面提到的這些名稱中,「傳統邏輯」,「現代邏輯」,指的是某種邏輯學,在一些情況下,「現代邏輯」也可以是某類課程的名稱;「普通邏輯」,「邏輯導論」或「邏輯學導論」只能是課程的名稱;「一階邏輯」,「數理邏輯」指的可以是一個或一種邏輯,也可以是這個或這種邏輯的學,還可以指講授這個或這種邏輯的課程。這里我們涉及到三種名稱:邏輯,邏輯學和邏輯課。有這個說明後再來看這些問題。在這些問題中,問題(4)是一個合理的問題,也沒有什麼歧義,因為在這個問題中,「傳統邏輯」和「現代邏輯」只能做邏輯學的理解,問的是兩種邏輯學之間的區別,現代的邏輯學究竟比過去的邏輯學有那些發展等。問題(3)的意思應該是比較兩門課程,因為「邏輯學導論」是課程的名稱,我們也有一階邏輯的課。如果這么看,這也合理。問題(2)的初衷大概類似於問題(3),但是問題(2)容易引起誤解。因為「數理邏輯」可以指一種邏輯,將它與普通邏輯相比,容易使人誤解,把普通邏輯也當成了一種邏輯。最不合理的是問題(1)。「普通邏輯」只能是某門課程的名稱,現代邏輯是一種邏輯學,這兩個「邏輯」不可比。如果把「現代邏輯」理解為課程的名稱,那麼,它指的不是一門課,凡講授現代邏輯學知識的課都可以稱為現代邏輯課,而普通邏輯只能是一門課。將一門課與一類課相比,這應該也不可比。所以怎麼都說不通。現在可以回答你們的問題,即問題(4)。一般認為,從亞里士多德到弗雷格以前的是傳統邏輯,從弗雷格開始,產生了現代邏輯。當然在弗雷格之前,也有萊布尼茨、布爾這些現代邏輯的先驅。現代邏輯與傳統邏輯的不同首先是產生的原因或動因不同。傳統邏輯產生的原因主要是哲學上論證,也包括日常生活中的一些論辯。現代邏輯產生於數學研究,主要為了找出數學中的邏輯。其次是方法的不同,這是主要的不同。學過一點現代邏輯都知道,現代邏輯的基本方法是形式化方法。從根本上說,形式化方法就是數學的方法。因為是一些數學家研究數學中的推理,找數學中的邏輯,所以很自然地引用了數學的方法。從萊布尼茨開始就提出了把推理當作數學演算的想法。這個想法到弗雷格才在一定范圍里得以實現。可以實現的原因之一,是弗雷格研究的是數學中的推理,這是我們各種推理中最嚴格的推理,但同時也是最簡單的一種推理。可以實現的原因之二,就是他用到了數學的方法,把數學用到推理的研究中。現在數學(古典數學)中推理的規律已經都找出來了,這就是一階邏輯。在這個過程中,產生了很多新的思想,建立了許多新的技術,邏輯學的內容大大豐富。如果說過去我們只能靠肉眼觀察,那麼,現在因為有了新的方法,我們已經知道如何去造顯微鏡,而且是電子顯微鏡。與傳統邏輯相比,因為有了觀察邏輯關系的「電子顯微鏡」,現代邏輯打開了一個全新的天地,范圍大大拓寬。這個天地是傳統邏輯用「肉眼」所不可能看見的。因為方法和動因的不同,導致了傳統邏輯和現代邏輯其他的一些不同。比如,同是研究日常推理,傳統邏輯總結一些方法,教我們這些方法,現代邏輯則要把其中的規律用數學的方法精確地刻畫出來,其目的不是教我們人如何正確地進行日常思維,而是「教」計算機去做這樣的的推理。現代邏輯的這種發展,使得邏輯學真正成為其他一些學科的基礎,比如計算機科學,語言學等,包括哲學方面的分析哲學,語言哲學等。這里所謂的基礎,意思是,如果沒有現代邏輯的知識,要進行這方面的有關研究是不可能的。這個基礎的作用是傳統邏輯做不到也不可能做到的。人們一般認為學習邏輯會使人邏輯性強,提高思維能力,表現在頭腦清楚,說話有條理,能言善辯等。這被稱為邏輯的教導作用。應該說這是邏輯學產生的初衷之一。但在今天看來,如果說,傳統邏輯還有一定的教導作用,那麼現代邏輯則基本沒有這個作用。現代邏輯使得邏輯學越來越像數學,成為專門的基礎知識。如果說現代邏輯也有一些教導作用,那麼它並也不比數學強。換言之,要想從學習現代邏輯中得到思維能力的提高,更好的法是去學數學。總之,邏輯學的這種教導作用,至少從現代邏輯的內容上看,已經不是今天邏輯學的主要功能。4.問:您認為哲學系本科生應該學普通邏輯課還是現代邏輯的課程?答:關於這個問題,我可能會說得多一些。因為即使在我們北大哲學系,這個問題也是從我的上一代老師、我的前輩們開始就一直在討論、爭論、甚至激烈爭論的問題。我認為,應該學什麼課,普通邏輯課還是現代邏輯課,取決於兩個因素:一個是課程的內容、性質;一個是學習的目的。這是從學生選課的角度說的。換一角度,可以問,哲學系應該對本科生開普通邏輯課還是現代邏輯課?也有兩個類似的因素,前一個因素沒變,後一個因素是,開什麼課取決於培養學生的目標。這是受教育者和教育者都關心的同一個問題,但角度不同。我想我還是從教育者的角度來談這個問題。現在本科生教育可以說有兩個目標,一個是素質教育,一個是專門人才培養。說白了,前者就是畢業後找工作,後者是讀研究生,准備走學術的道路。從社會需求的角度看,大部分人是要從事實際工作的,學者總是少數。因此現在比較強調素質教育,淡化專業,所以本科生階段取消了一些專業,比如我們系的本科生邏輯學專業就取消了。專門人才培養一般要到研究生階段才真正開始。盡管學生自己可以早早為自己定位,但是從教育者的角度說,並不一開始就把誰定在什麼方向。這增加了學生的自主性、能動性,同時也增加了學生自己的責任,學生也要為自己的將來負責。這是社會的進步。與強調素質教育相對應,另一方面,對准備走學術路的人也提出了更高的要求,要求有扎實的基礎,有出色的科研能力。這是一種兩極分化。一個本科生,剛進大學,很難說將來畢業後的去向,是做實際工作,還是讀研究生,最終走學術研究的路。從教育者的角度看,也只能是同時提供各種條件、環境,讓受教育者能走更適合自己發展的道路。一個好的大學,就是能提供好的這樣的條件和環境,比如開出各種課程和提供好的指導等。現在可以談談普通邏輯課和現代邏輯課的問題。簡單地說,現代邏輯的課程是為專門人才培養開設的。一個學生如果畢業後從事實際工作,在這方面他所需要的主要是素質教育,我認為不用學現代邏輯,但同時也不用學普通邏輯,倒是可以學學批判性思維這樣的課。為什麼這么說,我們可以先看看普通邏輯的性質和內容。普通邏輯是我國大學的邏輯知識普及課,內容大體上是亞里斯多德邏輯,即亞里斯多德的三段論、定義理論等,一些簡單的命題邏輯知識,再加一些歸納推理的內容,關於論證的常識等,從知識的組成看,基本上是傳統邏輯的東西。普通邏輯有一個基本考慮,就是圍繞思維來講。根據這個考慮,它把內容又分為概念,判斷,推理,論證幾個部分。近二十多年來,隨著現代邏輯影響不斷增加,普通邏輯課中也逐漸增加了一些現代邏輯的內容,課程的名稱也改成邏輯導論,內容和重點有了很大甚至是重要的改變,但普及邏輯知識的課程性質沒有變。這樣的一門課程,我認為有一些缺點。首先我們可以看一下經過這樣的普及課學習,會有什麼收獲,有什麼效果。從課程設置的角度說,不外是希望學生有這幾個方面的收獲:(1)獲得一定的邏輯學知識;(2)掌握一些方法,受到一定的訓練,思維能力有某些提高;(3)有了一定的基礎,便於繼續學習邏輯;(4)以邏輯為基礎去進行其他的課程的學習或研究。其中(1)和(2)合起來可以在素質教育方面起到一定的作用。(3)和(4)看起來是可以起到專門人才培養方面的作用。但實際情況究竟怎樣,是否可以達到這樣的效果,我們可以做一些分析。先看後兩條,即人才培養方面的(3)和(4)。首先,傳統邏輯和現代邏輯是邏輯學發展的兩個階段。現代邏輯不是從傳統邏輯的基礎上發展而來的,上面也談到,完全是新的問題,新的起點,新的方法。現代邏輯對傳統邏輯有種跳躍性,而沒有什麼繼承性。從我們的教學實踐看,學習傳統邏輯對學現代邏輯沒有什麼幫助,反而可能會有某些誤導。如果是為了要繼續學習邏輯,這個繼續被學的,只能是現代邏輯,所以不如一開始就學現代邏輯。(3)說的是普通邏輯課或邏輯導論課可以作為現代邏輯課的基礎,但從這個分析看,情況並非如此。不說有可能誤導,至少學習的效率不高。再看(4)。現代邏輯是像數學這樣的專門的基礎知識,需要按學數學那樣方式才能真正掌握,才可能成為用來學習和研究如計算機科學、語言學甚至哲學的知識基礎,不能只是停留在普及知識的層次上,淺顯地講講,象徵性地做些習題,而需要詳細地講解,嚴格地證明,嚴格地做習題,有些甚至是比較難的習題。這些即使在邏輯導論課上,也不可能做到。所以,希望達到(4)的效果,只能是一個願望,實際上根本達不到。這兩個方面說明,普通邏輯或邏輯導論在邏輯學研究或應用邏輯的專門人才培養方面起不到什麼作用。事實上,我們這些年的教學實踐上也證明了這一點。就我校來說,這二十多年來上過普通邏輯或邏輯導論課的學生應該達到數以萬計,但沒有一個學生由此而成為研究邏輯或者應用邏輯去研究其他領域問題的專門人才。這說明什麼問題?當然是我們作為教育者一方應該深刻反省的。說到底,主要是課程的性質,普及邏輯知識,這決定了這門課只能是作為文化素養提高的一個方面來教和學,而不是也不能作為其他知識和課程的基礎來教和學。說到這里,涉及到這門課的素質教育方面的意義。上面說了它在專門人才培養方面起不到什麼作用,現在我們可以就此再看它素質教育的作用方面。前面說到邏輯有教導作用,在這里對應到所希望達到的效果(2)。看起來普通邏輯所講的問題簡單、常見,與實際生活更接近,所以它更具有教導作用,但其實這里有些誤解。普通邏輯或邏輯導論都是傳統邏輯和現代邏輯的某種結合。關於現代邏輯,前面已經說了,它完全遠離了邏輯的教導作用,不是為日常思維服務的,而是一種基礎知識。再看傳統邏輯部分。這部分中確實有些內容是講思維方法,講有關的一些道理。但是在這方面,它有兩個不足:一是先天不足,一是後天不足。一般都不否認亞里斯多德邏輯是傳統邏輯的核心部分。亞里斯多德邏輯中的核心部分又是三段論。我們可以看看三段論在講什麼。它在講我們幾乎天生就會的三段論推理,比如「所有的A是B,所有的B是C,所以,所有的A是C」,講這樣的的推理為什麼是正確的,這樣的推理多少種格與式,哪些格式是正確的推理形式,可以如何變形,道理何在等等。這些細致的甚至顯得繁瑣的分析和證明主要不是為了日常思維的需要,而是為了哲學研究。我想說的是,邏輯學從一開始,就是一種學院派式的理論,這是它的精神實質,而且這種精神一直在延續。應該說,這是真正的邏輯學的精神。所以,亞里斯多德是邏輯學之父,他不僅從問題、對象,而且從方式和精神,都奠定了這門學科的基礎。關於日常思維的思維方法等只是這種理論的一些延伸,不是本質的部分。有了理論,可以在思維方法的方面做很多推廣。只是方法方面談多了,談泛了,實際上就出了這種學的圈。這就是傳統邏輯對日常思維方面作用的「先天不足」。作為一門課程,當然可以按照需要設計它的內容,沒有必要一定按某種學理精神來講授。但是,在思維能力提高和訓練方面,普通邏輯並沒有給我們提供的內容和訓練的手段。這是它的「後天不足」。如果要講思維方法,注重日常思維能力提高,有比普通邏輯更合適的課程,這就是批判性思維。實際上,批判性思維並不是一門邏輯課,但是它的問題更集中,目的也更明確,所以更專業。總體上看,對普通邏輯課,包括邏輯導論,在思想方法和思維能力訓練方面,如果是講思維的嚴格性,精確性,那不如去學數學。如果是講思維的敏捷、機智,善抓問題實質的准確性、尖銳性等,不如去學批判性思維。最後,再看希望達到的效果(1),即這門課對邏輯知識的了解和掌握方面的作用。作為知識上的修養,這當然也是一種素質的提高。特別地,對什麼是邏輯的精神,通過普通邏輯課或邏輯導論課多少可以了解一些,這應該是一個人知識組成中的重要部分。但是,知識普及性的課不能提供真正實用的技術和理論,這一點應該沒什麼疑問。我們只要看看邏輯學今天的發展和這些課程所講授的內容就不難得出這個結論。當然,不論怎樣,最後總會對邏輯的精神有一定程度的了解,有一定的邏輯的知識素養,這是大概是這門課最後的收獲。對此我想指出一點,從今天的角度看,這也是一種多少有點養尊處優的知識素養,因為它主要不解決實用問題,基本上是精神層面的東西。過去我國大學教育屬於計劃經濟體系,畢業生是國家幹部。什麼是國家幹部,就是國家的管理人員,當然不是人人最後都走上了管理崗位,但首先他們都屬於幹部體系,有幹部級別。大學的一個主要功能是為國家提供幹部儲備。作為這樣的教育,當然要使受教育者除了專門的知識、技能外,還要有一定的知識素養。比如,要知道一點邏輯,講點邏輯。在這種情況下,邏輯知識普及課對我國幹部隊伍素質的總體提高,還是起到一定的作用的。從這個意義上說,這門課也還是有功績的。但是,現在的情況已經有了根本的改變。一個受教育者不再是計劃經濟下教育生產線出產的一個產品,不再是一個幹部或儲備幹部,國家的幹部體制現在也轉變成了公務員體制,這不僅僅是名稱的改變。在現在的情況下,一個大學生首先是一個將來要參與社會競爭的主體。我們的教育體制已發生了根本的變化,教育也地具有了人本精神,教育者要地從受教育者的立場出發考慮問題。面對這樣的教育形勢和被教育者,我們應該教什麼?他們所面對的將是嚴酷的競爭和挑戰,已經沒有時間和條件再去接受那種養尊處優式的知識素養教育。所以我認為,如果說普通邏輯或邏輯導論這種邏輯知識普及課在過去時代條件下還有一些積極作用,那麼現在這些作用早已淡出,所以這樣的課已經不合時代要求,應該淘汰。取而代之的也是兩極分化:徹底講實用性,學批判性思維;真正學邏輯,學現代邏輯。這也是一種「與時俱進」吧。有一種觀點認為,一個大學畢業生,受過高等教育的人,不學普通邏輯或邏輯導論,不知道什麼是邏輯,不懂一點邏輯怎麼行。我認為這種觀點沒有建立在將邏輯學、邏輯課以及它們的歷史和社會時代背景等因素加以綜合和仔細分析的基礎上,沒有充分的根據。如果有我們這里的分析,那就不僅是「怎麼不行」,而且是勢在必行。至於哲學系開什麼課,不同的哲學系當然只能根據自己的情況量力而行。北大哲學系是按專門人才培養的方向來開課的,也有這個條件,所以當然應該開現代邏輯課,取消普通邏輯或邏輯導論課。我們實際上也是這么做的。目前只是對外系或校公共課還開邏輯導論,這是因為某種歷史的慣性吧,遲早也是要取消的。在我系,現代邏輯課是一系列課程。首先是一階邏輯。這是現代邏輯的入門課,也是哲學學習和研究的一個基礎課。如果將來研究哲學,可以到此為止,也可以再學模態邏輯等。如果要學邏輯,則必須在有這門課的基礎後再去學其他的邏輯課程。至於批判性思維,我認為是一門很好的課,也主張應該開這門課,甚至應該是全校的公共課。這是一門素質教育課,誰都可以選。但是要清楚,這門課與學哲學和學邏輯都沒有什麼特別的關系。

H. 怒了,求高人解釋程序演算法,很簡短的一個程序

外星人計算Pi的程序

一、源程序
本文分析下面這個很流行的計算PI的小程序。下面這個程序初看起來似乎摸不到頭腦,
不過不用擔心,當你讀完本文的時候就能夠基本讀懂它了。
程序一:很牛的計算Pi的程序
int a=10000,b,c=2800,d,e,f[2801],g;
main() {
for(;b-c;)
f[b++]=a/5;
for(;d=0,g=c*2;c -=14,printf("%.4d",e+d/a),e=d%a)
for(b=c; d+=f[b]*a,f[b]=d%--g,d/=g--,--b; d*=b);
}
二、數學公式
數學家們研究了數不清的方法來計算PI,這個程序所用的公式如下:
1 2 3 k
pi = 2 + --- * (2 + --- * (2 + --- * (2 + ... (2 + ---- * (2 + ... ))...)))

3 5 7 2k+1
至於這個公式為什麼能夠計算出PI,已經超出了本文的能力范圍。
下面要做的事情就是要分析清楚程序是如何實現這個公式的。
我們先來驗證一下這個公式:
程序二:Pi公式驗證程序
#include "stdio.h"
void main()
{
float pi=2;
int i;
for(i=100;i>=1;i--)
pi=pi*(float)i/(2*i+1)+2;
printf("%f\n",pi);
getchar();
}
上面這個程序的結果是3.141593。
三、程序展開
在正式分析程序之前,我們需要對程序一進行一下展開。我們可以看出程序一都是使用
for循環來完成計算的,這樣做雖然可以使得程序短小,但是卻很難讀懂。根據for循環
的運行順序,我們可以把它展開為如下while循環的程序:
程序三:for轉換為while之後的程序
int a=10000,b,c=2800,d,e,f[2801],g;
main() {
int i;
for(i=0;i<c;i++)
f[i]=a/5;
while(c!=0)
{
d=0;
g=c*2;
b=c;
while(1)
{
d=d+f[b]*a;
g--;
f[b]=d%g;
d=d/g;
g--;
b--;
if(b==0) break;
d=d*b;
}
c=c-14;
printf("%.4d",e+d/a);
e=d%a;
}
}
註:
for([1];[2];[3]) {[4];}
的運行順序是[1],[2],[4],[3]。如果有逗號操作符,例如:d=0,g=c*2,則先運行d=0,
然後運行g=c*2,並且最終的結果是最後一個表達式的值,也就是這里的c*2。
下面我們就針對展開後的程序來分析。
四、程序分析
要想計算出無限精度的PI,我們需要上述的迭代公式運行無數次,並且其中每個分數也
是完全精確的,這在計算機中自然是無法實現的。那麼基本實現思想就是迭代足夠多次
,並且每個分數也足夠精確,這樣就能夠計算出PI的前n位來。上面這個程序計算800位
,迭代公式一共迭代2800次。
int a=10000,b,c=2800,d,e,f[2801],g;
這句話中的2800就是迭代次數。
由於float或者double的精度遠遠不夠,因此程序中使用整數類型(實際是長整型),分
段運算(每次計算4位)。我們可以看到輸出語句 printf("%.4d",e+d/a); 其中%.4就是
把計算出來的4位輸出,我們看到c每次減少14( c=c-14;),而c的初始大小為2800,因
此一共就分了200段運算,並且每次輸出4位,所以一共輸出了800位。
由於使用整型數運算,因此有必要乘上一個系數,在這個程序中系數為1000,也就是說
,公式如下:
1 2 3 k
1000*pi = 2k+ --- * (2k+ --- * (2k+ --- * (2k+ ... (2k+ ---- * (2k+ ... )).
..)))
3 5 7 2k+1
這里的2k表示2000,也就是f[2801]數組初始化以後的數據,a=10000,a/5=2000,所以下面
的程序把f中的每個元素都賦值為2000:
for(i=0;i<c;i++)
f[i]=a/5;
你可能會覺得奇怪,為什麼這里要把一個常數儲存到數組中去,請繼續往下看。
我們先來跟蹤一下程序的運行:
while(c!=0) 假設這是第一次運行,c=2800,為迭代次數
{
d=0;
g=c*2; 這里的g是用來做k/(2k+1)中的分子
b=c; 這里的b是用來做k/(2k+1)中的分子
while(1)
{
d=d+f[b]*a; f中的所有的值都為2000,這里在計算時又把系數擴大了
a=10000倍。

這樣做的目的稍候介紹,你可以看到
輸出的時候是d/a,所以這不影
計算
g--;
f[b]=d%g; 先不管這一行
d=d/g; 第一次運行的g為2*2799+1,你可以看到g做了分母
g--;
b--;
if(b==0) break;
d=d*b; 這里的b為2799,可以看到d做了分子。
}
c=c-14;
printf("%.4d",e+d/a);
e=d%a;
}
只需要粗略的看看上面的程序,我們就大概知道它的確是使用的那個迭代公式來計算Pi
的了,不過不知道到現在為止你是否明白了f數組的用處。如果沒有明白,請繼續閱讀。

d=d/g,這一行的目的是除以2k+1,我們知道之所以程序無法精確計算的原因就是這個除
法。即使用浮點數,答案也是不夠精確的,因此直接用來計算800位的Pi是不可能的。那
么不精確的成分在哪裡?很明顯:就是那個余數d%g。程序用f數組把這個誤差儲存起來
,再下次計算的時候使用。現在你也應該知道為什麼d=d+f[b]*a;中間需要乘上a了吧。
把分子擴大之後,才好把誤差精確的算出來。
d如果不乘10000這個系數,則其值為2000,那麼運行d=d/g;則是2000/(2*2799+1),這
種整數的除法答案為0,根本無法迭代下去了。
現在我們知道程序就是把余數儲存起來,作為下次迭代的時候的參數,那麼為什麼這么
做就可以使得下次迭代出來的結果為
接下來的4位數呢?
這實際上和我們在紙上作除法很類似:
0142
/——------
7 / 1
10
7
---------------
30
28
---------------
20
14
---------------
60
.....
我們可以發現,在做除法的時候,我們通常把余數擴大之後再來計算,f中既然儲存的是
余數,而f[b]*a;則正好把這個余數擴大了a倍,然後如此循環下去,可以計算到任意精
度。
這里要說明的是,事實上每次計算出來的d並不一定只有4位數,例如第一次計算的時候
,d的值為31415926,輸出4位時候,把低四位的值儲存在e中間,e=d%a,也就是5926。

最後,這個c=c-14不太好理解。事實上沒有這條語句,程序計算出來的仍然正確。只是
因為如果迭代2800次,無論分數如何精確,最後Pi的精度只能夠達到800。
你可以把程序改為如下形式嘗試一下:
for(i=0;i<800;i++)
{
d=0;
g=c*2;
b=c;
while(1)
{
d=d+f[b]*a;
g--;
f[b]=d%g;
d=d/g;
g--;
b--;
if(b==0) break;
d=d*b;
}
// c=c-14; 不要這句話。
printf("%.4d",e+d/a);
e=d%a;
}
最後的答案仍然正確。
不過我們可以看到內循環的次數是c次,也就是說每次迭代計算c次。而每次計算後續位
數的時候,迭代次數減少14,而不影響精度。為什麼會這樣,我沒有研究。另外最後的
e+d/a,和e=d/a的作用就由讀者自己考慮吧。
--

I. 神經網路演算法是用來干什麼的

神經網路演算法是由多個神經元組成的演算法網路。
邏輯性的思維是指根據邏輯規則進行推理的過程;它先將信息化成概念,並用符號表示,然後,根據符號運算按串列模式進行邏輯推理;這一過程可以寫成串列的指令,讓計算機執行。然而,直觀性的思維是將分布式存儲的信息綜合起來,結果是忽然間產生的想法或解決問題的辦法。這種思維方式的根本之點在於以下兩點:
1、信息是通過神經元上的興奮模式分布儲在網路上。
2、信息處理是通過神經元之間同時相互作用的動態過程來完成的。
思維學普遍認為,人類大腦的思維分為抽象(邏輯)思維、形象(直觀)思維和靈感(頓悟)思維三種基本方式。

J. 秀爾演算法的演算法實現

我們要試著解決的問題是:給定一個合成數 N,找到整數p在1和N之間且不包含1和N, 並且 N整除於p。
秀爾演算法包含兩個部份:
1.一個以傳統的電腦運作的簡化演算法,將因子分解簡化成搜尋目的問題。2.一個量子演算法,解決搜尋目的問題。
傳統部份:
1.選擇任意數字a < N
2.計算gcd(a, N)。這里可以使用輾轉相除法來計算。
3.若 gcd(a, N) ≠ 1,則我們有了一個N非顯然的因子,因此這部份結束了。
4.否則,利用下面的周期尋找副函式(Period-finding subroutine,下面會列出)來找出下面這個函數的周期r: ?f(x) = a^x mod N。換句話說,找出a在裡面的目 r,或者最小的正整數r令 f(x + r) = f(x)。
5.若r是奇數,回到第一步。
6.若a^(r/2) ≡-1 (mod N), 回到第一步。
7. gcd(a^(r/2)? ± 1, N) 是N非平凡的一個因子。分解完成。
量子部份:周期尋找副函式(Period-finding subroutine)
這個演算法使用的量子線路是為了在給定一個固定常數 N 以及一個任意常數 a之下,找出f(x) = a^x mod N所設定的。給定N, 找出Q = 2^q且合乎N^2≤Q≤2N^2??(這同時表示Q / r > N)。輸入和輸出量子位元暫存器需要儲存從0到Q-1所有值的疊加態,因此分別需要q個量子位元。這里使用看起來比所需的數量還要更多一倍的量子位元,保證了即使周期r的大小逼近N/2,也至少有N個不同的x會產生相同的 f(x)。
演算法如下:
1.將暫存器初始化成
?
x從0到Q - 1。所以這一個初始態是Q 個狀態的疊加。
2.建立量子函式版本的f(x) ,並且應用於上面的疊加態, 得到
?
這里仍舊是Q個狀態的疊加。
3. 對輸入暫存器進行 量子傅立葉轉換。這個轉換(操作於二的冪次即Q = 2^q個疊加態上面)使用一個Qth 單位根 例如 ω = e^(2pi*i/Q)將任意給定態|x>的振幅平均分布在所有Q個態|y>上。另一個方法是對於每個不同的|x>:
?
由此得到最終狀態:
?
這是一個遠多過Q個狀態的疊加態,但是遠低過Q^2個。雖然在和中有Q^2項,但只要x0 和 x的值相同,態|y>f(x0)就可被提出來。令
ω = e^(2pi*i/Q)? 為 Qth 的一個單位根,
r 為 f 的周期,
x0為一個產生相同 f(x) 的 x 的集裡面的最小元素(我們已經有x0 < r),以及
b在0到[(Q-x0-1)/r]之間使得x0 + rb < Q。
那麼ω^ry則是復平面的一個單位向量(ω是一個單位根,r 和 y 是整數),而?Q^(-1)|y>|f(x0)>在最終狀態下的系數則為?
?
這一求和的每一項代表一個獲得相同結果的不同路徑,而量子干涉發生。在單位向量ω^ryb幾乎與復平面指向同一方向(要求ω^ry指向正實數軸)時,干涉將是相長的。
4.進行測量。我們由輸入寄存器取得結果 y,由輸出寄存器取得f(x0)。而既然f 是周期,對某對y和 f(x0)進行測量的概率則由
?
給出。分析顯示這個概率越高,單位向量ω^ry就越接近正實數軸,或者yr/Q就越接近一個整數。除非r是2的乘方,否則它不會是Q的因子。
5.對y/Q進行連分數展開來計算其近似值,並生成滿足下列兩個條件的c/r′:
A: r′<N
B: |y/Q - c/r′| < 1/2Q
借著滿足這一些條件,r′ 有很高的機率會是我們要找的周期r 。
6. 檢查f(x) = f(x + r′) ,由此可得
?
?
如果成功了,我們就完成了。
7.否則,以接近y左右的數值作為r的候選,或者說多取幾個r′. 如果任何候選成功了,我們就完成了。
8.否則,回到第一步驟(也就是全部重新作一次)。?

熱點內容
安卓odd是什麼意思 發布:2025-05-14 04:49:57 瀏覽:919
安卓哪個app能查詢航班 發布:2025-05-14 04:49:04 瀏覽:556
linux定時shell腳本 發布:2025-05-14 04:49:00 瀏覽:682
審計需要什麼配置 發布:2025-05-14 04:48:55 瀏覽:548
安卓軟體為什麼經常自啟動 發布:2025-05-14 04:38:17 瀏覽:159
譚浩強c語言第三版課後答案 發布:2025-05-14 04:37:31 瀏覽:59
san存儲和nas存儲 發布:2025-05-14 04:34:44 瀏覽:152
幽靈戰士3什麼配置 發布:2025-05-14 04:33:53 瀏覽:114
安卓的虛擬機哪個好用 發布:2025-05-14 04:32:34 瀏覽:871
宿遷存儲式化工設備 發布:2025-05-14 04:32:33 瀏覽:54