❶ 求距離向量演算法,實現路由表的自動更新,用vb編程實現的
vb不好弄,用c吧
❷ 請問自學AI演算法需要懂什麼知識
首先你需要數學基礎:高等數學,線性代數,概率論數理統計和隨機過程,離散數學,數值分析
其次需要演算法的積累:人工神經網路,支持向量機,遺傳演算法等等演算法;當然還有各個領域需要的演算法,比如你要讓機器人自己在位置環境導航和建圖就需要研究SLAM;總之演算法很多需要時間的積累;
然後,需要掌握至少一門編程語言,畢竟演算法的實現還是要編程的;如果深入到硬體的話,一些電類基礎課必不可少;
人工智慧一般要到研究生才會去學,本科也就是蜻蜓點水看看而已,畢竟需要的基礎課過於龐大。
❸ 急!跪求各位大俠幫忙改一段用C語言實現的網路距離向量演算法的程序,可能是指針引用不當引起的,調試不出。
# include<stdio.h>
# include<string.h>
# define MAX_NAME_LEN 80
typedef struct Router
{
char destination[MAX_NAME_LEN];
int distance;
char nexthop[MAX_NAME_LEN];
char name[MAX_NAME_LEN];
}Router,*PRouter;//路由器結構定義
int Dis_vector(char f1[],char f2[],Router *PRx[],Router *PRy[])
{
FILE * fp1;
FILE * fp2;
int i=0;
if ((fp1 = fopen(f1, "a")) == NULL||(fp2 = fopen(f2, "r+")) == NULL)
return 0;
while(!feof(fp2))
{
(PRy[i]->distance)++;strcpy(PRy[i]->nexthop,PRy[i]->name);i++;}//路由器Y的路由更新
while(!feof(fp1)&&!feof(fp2))
{
if(!strcmp(PRx[i]->destination,PRy[i]->destination))
{
fscanf(fp1,"%s%d%s",PRy[i]->destination,&(PRy[i]->distance),PRy[i]->nexthop);i++;return 1;
}//比較目的地址
else if(!strcmp(PRx[i]->nexthop,PRy[i]->nexthop))
{
PRx[i]->distance=PRy[i]->distance;i++;return 1;
}//比較下一跳
else if(PRx[i]->distance>PRy[i]->distance)
{
PRx[i]->distance=PRy[i]->distance;strcpy(PRx[i]->nexthop,PRy[i]->nexthop);i++;return 1;
}//比較距離
}
}//距離向量演算法
int input_r(char f[],Router *PRx[])
{
FILE * fp;
int i=0;
if ((fp = fopen(f, "r")) == NULL)
return 0;
fscanf(fp,"%s",PRx[0]->name);
while(!feof(fp))
{
fscanf(fp, "%4s%4d%4s", PRx[i]->destination,&(PRx[i]->distance),PRx[i]->nexthop);
i++;
}
if ( fclose(fp) )
return 0;
return 1;
}//讀取路由器X的路由表
int input_n(char f[],Router *PRy[])
{
FILE * fp;
int i=0;
if ((fp = fopen(f, "r")) == NULL)
return 0;
fscanf(fp,"%s",PRy[0]->name);
while(!feof(fp))
{
fscanf(fp, "%4s%4d%4s", PRy[i]->destination,&(PRy[i]->distance),PRy[i]->nexthop);
i++;
}
if ( fclose(fp) )
return 0;
return 1;
}//讀取路由器Y的路由表
int output(char f[], Router *PRx[])
{
FILE * fp;
int i=0;
if ((fp = fopen(f, "w")) == NULL)
return 0;
fprintf(fp,"%s\n",PRx[0]->name);
while ( !feof(fp) )
{
fprintf(fp, "%4s%4d%4s\n", PRx[i]->destination,PRx[i]->distance,PRx[i]->nexthop);
i++;
}
if ( fclose(fp) )
return 0;
return 1;
}//輸出更新後的X路由器的路由表
int main()
{
PRouter PRx[1000],PRy[1000]; //好像你在調用input_r函數中也未申請空間,所以改了下!
if(input_r("e:\\input_r.txt", PRx) == 1)
{
if (input_n("e:\\input_n.txt", PRy) == 1)
{
if ( Dis_vector("e:\\input_r.txt","e:\\input_n.txt",PRx,PRy)== 1)
{
output("e:\\output_PRx.txt", PRx);
printf("Dis_vector successful!\n");
}
}
}
return 0;
}
這個可以調試通過,但因為不是很清楚你的需求,所以還不知道能不能幫你徹底解決!
❹ 矢量濾波不是將三個分量分別進行濾波吧,而是整體進行矢量運算,原理我懂matlab編程沒學過不會
參考矢量濾波相關書籍,知識掌握後用MATLAB編
❺ MariaDB 和 Mysql 怎麼選
MySQL和MariaDB的性能比較
現在把目光移到benchmark上面來,它其實也是由MariaDB團隊開發的,並加了一下額外的說明。這篇博客提到了一個有趣的地方:把MYSQL5.6的線程數一直增加到16,性能都很好,但是超過了16的話,盡管性能也有提升一點點,但比較發現,遠不如其他版本(包括MairaDB-5.5.28a和MairaDB-10.0.1;參考文章頂部的性能測試圖)。這在單核計算機裡面試圖達到多核多線程的效果的並行程序時,都會有此類的通病。如果演算法設計得當,隨著CPU核心數的增加,性能也會跟著提升。當然問題是,你必須在並行程序中處理好2個方面:(1)跨多核的多線程問題(2)矢量化。這也是當前面向多核編程的兩個方向,你編寫的必須能很好的控制這兩個方面。
如果沒有正確的編寫代碼將會得到一個共同的結果,即在用8到16個線程的開始你就想看到好的結果,但在這些線程運行之後你不會看到你期望的結果。你將會看到這個問題,這意味這可能是演算法問題。(這也不是超線程或是硬體線程造成的)這就是我們在這里看到MySQL 基準的問題。對於我來說,這就是MySQL規模化產生問題的跡象,這也是令人擔心的原因之一。MariaDB在同樣的基準中也有一些小問題,但是比MySQL要輕微的多,只能說是勉強吧;我推測這個問題在並行計算中可能不會出現。
我也不知道在測試中怎樣才能很好的根據不同機器指定不同的編譯器來與之匹配。當你為Intel編譯代碼時,你需要為目標機器編譯生成合適的SIMD代碼;如果不匹配,你將不會得到你所期望執行的矢量代碼。為了能正確處理,你需要在代碼中插入正確的編譯指示代碼,然後要寫下正確的矢量演算法,最後在選擇合適的編譯器。我知道這樣看起來很愚笨,但我看過一個發行產品用錯誤的編譯器所造成的結果是你無法想像的。好歹,很明顯,MySQL代碼在多核和矢量化中的優化沒有MariaDB好。
❻ 距離矢量路由協議演算法: 誰能給我說下該演算法的原理,謝謝
RIP協議使用距離矢量演算法,網路工作時路由器之間利用此協議更新路由表項,每隔2分鍾更新一次。
路由表項格式:(direction,jump,next)分別表示目的網路地址,跳數(距離),下一跳路由地址
當某路由器A收到相鄰路由器B發來的路由信息(D,J,N)後執行以下分析:
首先修改(D,J,N)——>(D,J+1,B)
1 如果A沒有到D的路由信息,則生成路由表項(D,J+1,B);否則2
2 A有到D的路由信息(D,?,B)?就是1~16任意值,則將其更新為(D,J+1,B);否則3
3 A有到D的路由信息(D,K,X)其中K>J+1,X!=B,則將其更新為(D,J+1,B);否則4
4 什麼都不做;
我自己寫的,希望對你有用!
❼ 游戲開發中會用到哪些常用AI演算法
游戲開發指利用計算機編程語言,如C編程語言、C++、java等,編寫計算機、手機或游戲機上的游戲。 目前流行的游戲開發語言為C++編程語言,目前流行的游戲開發介面為DirectX9.0,還有OpenGL、SDL(Simple DirectMedia Layer)等。現在手機上玩的游戲分為Android與IOS兩種不同平台,分別是用eclipse/MyEclipse和xcode。現在也流行一些跨平台的編程引擎,例如cocos2d-x、unity 3D等。
接下來,再看看游戲開發的課程,游戲開發的課程除了理論知識還包括軟體的操作。
C++程序基礎:通過學習C++語言,奠定編程基礎。使用VS.net2005編譯工具,高效構建代碼。
演算法與數據結構:通過學習演算法與數據結構的基本概念,了解常用的數據結構及相關的抽象數據定義,認識計算機求解的基本思路與方法。
Win32程序入門:通過API和MFC的學習,熟悉Windows環境下程序設計基本方法。通過使用DirectX繪制2D圖形。
游戲數學和智能應用:游戲中的坐標系,矢量、矩陣,幾何碰撞,物理模擬,人工智慧與尋路演算法。
2D游戲技術與應用:2D 游戲技術概論,游戲地圖系統,GUI 系統,戰斗系統設計,任務系統優秀的聲音引擎 BASS,Cocos2D-X 引擎,Box2D 物理引擎。
游戲開發的常用軟體有C++、DirectX、Box2D、Cocos2d-x、Unity,不能說哪款最好用,因為這是游戲開發過程中都要用到的軟體,必須都精通。
C++是在C語言的基礎上開發的一種通用編程語言,應用廣泛。
DirectX,(Direct eXtension,簡稱DX)是由微軟公司創建的多媒體編程介面。
Box2D是一個用於模擬2D剛體物體的C++引擎。zlib許可是一個自由軟體授權協議,但並非left。
Cocos2d-x是一個開源的移動2D游戲框架,MIT許可證下發布的。這是一個C++ Cocos2d-iPhone項目的版本。
Unity是由Unity Technologies開發的一個讓玩家輕松創建諸如三維視頻游戲、建築可視化、實時三維動畫等類型互動內容的多平台的綜合型游戲開發工具,是一個全面整合的專業游戲引擎。
❽ 平方根倒數速演算法的演算法的切入點
浮點數的平方根倒數常用於計算正規化矢量。 3D圖形程序需要使用正規化矢量來實現光照和投影效果,因此每秒都需做上百萬次平方根倒數運算,而在處理坐標轉換與光源的專用硬體設備出現前,這些計算都由軟體完成,計算速度亦相當之慢;在1990年代這段代碼開發出來之時,多數浮點數操作的速度更是遠遠滯後於整數操作,因而針對正規化矢量演算法的優化就顯得尤為重要。下面陳述計算正規化矢量的原理:
要將一個矢量標准化,就必須計算其歐幾里得范數以求得矢量長度,而這時就需對矢量的各分量的平方和求平方根;而當求取到其長度並以之除該矢量的每個分量後,所得的新矢量就是與原矢量同向的單位矢量,若以公式表示: 可求得矢量v的歐幾里得范數,此演算法正類如對歐幾里得空間的兩點求取其歐幾里得距離, 而求得的就是標准化的矢量,若以代表,則有, 可見標准化矢量時需要用到對矢量分量的平方根倒數計算,所以對平方根倒數計算演算法的優化對計算正規化矢量也大有裨益。
為了加速圖像處理單元計算,《雷神之錘III競技場》使用了平方根倒數速演算法,而後來採用現場可編程邏輯門陣列的頂點著色器也應用了此演算法。
❾ JAVA實現距離矢量演算法
public static void main(String[] args) {
new Jsq();
}
/* 利用構造進行實例化 */
public Jsq() {