Time of Update: 2018-12-05
1. 簡述 假設待排序數組為 int array[], 數組長度為n。快速排序是一個遞迴得方法。 當n==1的時候,停止排序。 當n>1的時候,首先選擇數組中得一個元素作為基準,然後,把小於這個基準得元素放到這個基準的左邊,把大於這個基準得元素放到這個元素得右邊。 具體實現下面進行簡單得說明,假設array[0]作為基準: 首先,儲存基準得值,int tmp=array[0]; 然後,兩個指標,int left=0; int right = n-1;
Time of Update: 2018-12-05
1. 簡述1.1 一般方法 計數排序的排序對象一般是整數。 假設待排序數組為 int array[], 數組長度為n。 第一步:開闢臨時數組,int tmp[],數組長度為n。int count,數組長度為10。 第二步:遍曆數組,得到最大數值的位元d,即後面需要d次排序。 第三步:根據個位進行排序,根據十位進行排序,···,根據d位進行排序。 對於根據i位進行排序,其中1<=i<=d
Time of Update: 2018-12-05
1. 極小極大搜尋方法 一般應用在博弈搜尋中,比如:圍棋,五子棋,象棋等。結果有三種可能:勝利、失敗和平局。暴力搜尋,如果想通過暴力搜尋,把最終的結果得到的話,搜尋樹的深度太大了,機器不能滿足,一般都是規定一個搜尋的深度,在這個深度範圍內進行深度優先搜尋。
Time of Update: 2018-12-05
1. 概述
Time of Update: 2018-12-05
1. 問題舉例 繼續使用第2章中的例子,即Aldo有時會去進行水上運動,天氣情況對於Aldo選擇是否去水上運動有很大的作用,可以想象,如果天氣好,很可能Aldo就會去,如果天氣惡劣,Aldo就不會去。現在已知若干天的天氣情況,和Aldo是否去參與了水上運動的記錄,根據新的一天的天氣情況來預測Aldo是否會去進行水上運動。 2. 決策樹的一般形式 通常決策樹代表執行個體屬性值約束的合取得析取式。從樹根到樹葉的每一條路徑對應一組屬性測試的合取,樹本身對應這些合取的析取。
Time of Update: 2018-12-05
1. 簡述 假設待排序數組為 int array[], 數組長度為n。 主要是利用堆的性質。對於升序排序,使用最大堆。 首先,建堆,使用遞迴後根序遍曆得方法,通過交換元素,保證根項目比孩子項目大。 第1趟,堆頂元素array[0]與array[n-1]交換,保證array[n-1]的數值正確,根據array[0]新的數值更新堆。 第2趟,堆頂元素array[0]與array[n-2]交換,保證array[n-2]的數值正確,根據array[0]新的數值更新堆。
Time of Update: 2018-12-05
1. 簡述 所謂的描述式AI,基本上與一般應用程式中的設定檔很相像,把AI角色的一些重要屬性和邏輯規則使用檔案儲存體,這樣只要修改檔案中的內容,而不必重新編譯軟體就可以對遊戲進行調試。對於小型的遊戲,實現描述式AI還是可行的。但是對於大型遊戲,就要靠物理引擎來完成了。2. 注意幾點 這一章,確實沒有什麼好記錄的,基本上就是說角色的屬性可以記錄,角色的行為規則可以記錄,如果自己實現描述式AI,還有注意讀取檔案的時候,考慮到檔案中的資料是非法形式時,這樣處理,對資料左右空格的處理。
Time of Update: 2018-12-05
1. 標準演算法 移動模式,實際上就是控制角色移動的方式。比如:可以建立圓形、方形、蛇形、曲線以及其他類型的模式。 標準移動模式演算法使用控制指令,指示電腦控制的角色,在每一輪遊戲迴圈中如何移動。 下以一個蛇形的移動模式為例,進行說明: 下面就是一組控制指令 : (turn_right, turn_left, step_forward, step_backward) (0, 0, 2, 0)
Time of Update: 2018-12-05
1. 函數原型(c++ reference) void * memcpy ( void * destination, const void * source, size_t num ); 不能解決某些覆蓋問題。 char * strcpy ( char * destination, const char * source ); 不能解決某些覆蓋問題,根據'\0'表示字串複製終止。 void * memmove ( void * destination, const void
Time of Update: 2018-12-05
1. 簡述 假設待排序數組為 int array[], 數組長度為n。歸併排序是一個遞迴得方法。 當n==1時,停止遞迴。 當n>1時,開闢一個與array同樣大小得數組,int tmp[] 將array[0]-array[n/2]得數組遞迴排序,將array[n/2+1]-array[n-1]的數組遞迴排序 將兩部分數組,分別用兩個指標,將小得元素一個一個放入到tmp數組中。
Time of Update: 2018-12-05
1. 簡述 解決任意兩點間的最短路徑的一種演算法。2. 複雜度 T=O(V^3) ,S=O(V^2),使用鄰接矩陣儲存。3. 虛擬碼 需要注意的是i,j,k三個變數的順序。// dist(i,j) 為從節點i到節點j的最短距離For i←1 to n do For j←1 to n do dist(i,j) = weight(i,j) For k←1 to n do // k為“媒介節點” For i←1 to n do For j←1 to n
Time of Update: 2018-12-05
1. 定性AI與非定性AI 定性行為或其表現是特定的,而且是可預測的,沒有不確定性。 非定性行為有某種程度的不確定性,有點不可預測。比如:讓非玩家角色學習到適應玩家的作戰戰術。這樣的學習能力可以利用神經網路、貝葉斯技術或遺傳演算法而得到。2. 幾個實用非定性AI方法的主流遊戲 "Creatures"、"Black & White"、"Battlecruiser3000AD"、"Fields of Battle"以及"Heavy Gear"。
Time of Update: 2018-12-05
1. 簡述 假設待排序數組為 int array[], 數組長度為n。 該方法實質上是一種分組插入方法。假設數組長度n=10,我們設定幾個分組的個數為1,3,5。 首先,分5組,即(array[0],array[5]), (array[1],array[6]),
Time of Update: 2018-12-05
1. 簡述 假設待排序數組為 int array[], 數組長度為n。 第1趟在array[0]-array[n-1]範圍內,從後向前依次比較,把較小交換到前面,最終最小的元素會站在array[0]裡面。 第2趟在array[1]-array[n-1]範圍內,··· ,最終第二小的元素會站在array[1]裡面。 ... 第n-1趟,在array[n-2]-array[n-1]範圍內,··· , 最終第n-1小的元素會站在array[n-2]裡面。
Time of Update: 2018-12-05
1. 簡述 記得,在上物件導向程式設計的課中,就學過有限狀態機器,後來上編譯原理的時候,接著有限狀態機器,直到研一的形式語言自動機中,還是有限狀態機器。貌似有一個很列害的ERP中的核心解決方案也是狀態機器。不過給我印象最深的還是本科做的百項工程時,使用有限狀態機器實現無線模組的自動組網與通訊,狀態機器說簡單吧,確實挺簡單,尤其是實際用的時候,但是想用好吧,也不輕鬆,狀態機器的實現是很簡單,但是狀態機器得設計是要花一些心思的。
Time of Update: 2018-12-05
1. 簡述 並查集是一種樹型的資料結構,用於處理一些不相交集合(Disjoint Sets)的合并及查詢問題。常常在使用中以森林來表示。 需要實現的操作有:合并兩個集合,判斷兩個元素是否屬於一個集合。 這裡介紹的主要是普通的並查集,很多情況下使用的並查集是需要擴充的,根據使用方式的不同,有很多差別,這裡僅僅是最基本的演算法。2. 複雜度 T=O(n*α(n)) ,
Time of Update: 2018-12-05
1. 基本的路徑尋找 從最基本得層次來講,路徑尋找只是讓某個遊戲角色,從其最初位置移向所需到達的目的地的過程而已。本質上,這一點和第二章中的基本追逐演算法的原理相同。具體如:簡單追逐追逐方法(最簡單的使座標逐漸相同)和視線追逐方法(使用Breseman方法)。但是,如果遊戲環境中有障礙物,那麼就需要考慮其他事情了。如所示,兩種方法產生的路徑都可能被障礙物阻截。 1.1 隨機移動避開障礙物
Time of Update: 2018-12-05
1. 簡述 計數排序的排序對象一般是整數。 假設待排序數組為 int array[], 數組長度為n。 第一步,遍曆數組,得到數組的最大值max和最小值min。 (n) 第二步,開闢一個新數組,int count[],數組長度為max-min+1,其中每個元素初始化為0。 第三步,遍曆array數組,在count數組內統計array中每個元素出現的個數。(n) 第四步,根據count數組,填充array數組。(n+k)2. 複雜度
Time of Update: 2018-12-05
1. 簡述 假設待排序數組為 int array[], 數組長度為n。 第1趟,認為array[0]-array[0]已經排序,把array[1]插入到合適的位置。 第2趟,認為array[0]-array[1]已經排序,把array[2]插入到合適的位置。 ··· 第n-1趟,認為array[0]-array[n-2]已經排序,把array[n-1]插入到合適的位置。2. 複雜度
Time of Update: 2018-12-05
1. 基本群聚 這一節介紹的演算法,來自於Craig Reynolds在1987年發表的論文《Flocks,Herds and Schools:A Distributed Behavioral Model》。在論文中,他提出演算法原型模擬整群的鳥、魚或其他生物。