A. java中如何遍歷最短路徑長度鄰接矩陣
packagetest;
importjava.util.ArrayList;
importjava.util.List;
/**
*java-用鄰接矩陣求圖的最短路徑、最長途徑。弗洛伊德演算法
*/
publicclassFloydInGraph{
privatestaticintINF=Integer.MAX_VALUE;
privateint[][]dist;
privateint[][]path;
privateList<Integer>result=newArrayList<Integer>();
publicFloydInGraph(intsize){
this.path=newint[size][size];
this.dist=newint[size][size];
}
publicvoidfindPath(inti,intj){
intk=path[i][j];
if(k==-1)return;
findPath(i,k);
result.add(k);
findPath(k,j);
}
publicvoidfindCheapestPath(intbegin,intend,int[][]matrix){
floyd(matrix);
result.add(begin);
findPath(begin,end);
result.add(end);
}
publicvoidfloyd(int[][]matrix){
intsize=matrix.length;
for(inti=0;i<size;i++){
for(intj=0;j<size;j++){
path[i][j]=-1;
dist[i][j]=matrix[i][j];
}
}
for(intk=0;k<size;k++){
for(inti=0;i<size;i++){
for(intj=0;j<size;j++){
if(dist[i][k]!=INF&&
dist[k][j]!=INF&&
dist[i][k]+dist[k][j]<dist[i][j]){//dist[i][k]+dist[k][j]>dist[i][j]-->longestPath
dist[i][j]=dist[i][k]+dist[k][j];
path[i][j]=k;
}
}
}
}
}
publicstaticvoidmain(String[]args){
FloydInGraphgraph=newFloydInGraph(5);
int[][]matrix={
{INF,30,INF,10,50},
{INF,INF,60,INF,INF},
{INF,INF,INF,INF,INF},
{INF,INF,INF,INF,30},
{50,INF,40,INF,INF},
};
intbegin=0;
intend=4;
graph.findCheapestPath(begin,end,matrix);
List<Integer>list=graph.result;
System.out.println(begin+"to"+end+",thecheapestpathis:");
System.out.println(list.toString());
System.out.println(graph.dist[begin][end]);
}
}
B. Floyd演算法是什麼
Floyd演算法又稱為弗洛伊德演算法,插點法,是一種用於尋找給定的加權圖中頂點間最短路徑的演算法。
通過一個圖的權值矩陣求出它的每兩點間的最短路徑矩陣。
從圖的帶權鄰接矩陣A=[a(i,j)] n×n開始,遞歸地進行n次更新,即由矩陣D(0)=A,按一個公式,構造出矩陣D(1);又用同樣地公式由D(1)構造出D(2);……;最後又用同樣的公式由D(n-1)構造出矩陣D(n)。矩陣D(n)的i行j列元素便是i號頂點到j號頂點的最短路徑長度,稱D(n)為圖的距離矩陣,同時還可引入一個後繼節點矩陣path來記錄兩點間的最短路徑。
採用的是(鬆弛技術),對在i和j之間的所有其他點進行一次鬆弛。所以時間復雜度為O(n^3); 其狀態轉移方程如下: map[i,j]:=min{map[i,k]+map[k,j],map[i,j]} map[i,j]表示i到j的最短距離 K是窮舉i,j的斷點 map[n,n]初值應該為0,或者按照題目意思來做。
當然,如果這條路沒有通的話,還必須特殊處理,比如沒有map[i,k]這條路
C. What paradigm is the author writing within, critical or uncritical怎麼理解這句話
就問你:作者的寫作方式是什麼,帶諷刺性嗎?
隨著編程(programming、偶不喜歡說程序設計)方法學和軟體工程研究的深入,特別是OO思想的普及,範式(paradigm)以及編程範式等術語漸漸出現在人們面前。
面向對象編程(OOP)常常被譽為是一種革命性的思想,正因為它不同於其他的各種編程範式;編程範式也許是學習任何一門編程語言時要理解的最重要的術語。
然而,在國內逐步了解「範式/編程範式」時,英文中該術語已經處於abuse的地步。
§1 基本含義
托馬斯.庫恩提出「科學的革命」的範式論之後,Robert Floyd在1979年圖靈獎的頒獎演說中使用了編程範式一詞。編程範式一般包括三個方面,以OOP為例:
1. 學科的邏輯體系:如類/對象、繼承、動態綁定、方法改寫、對象替換等等機制。
2. 心理認知因素:按照面向對象編程之父Alan Kay的觀點,「計算就是模擬」。OO範式極其重視隱喻(metaphor)的價值,通過擬人化,按照自然的方式模擬自然。
3. 自然觀:強調程序的組織技術,視程序為鬆散耦合的對象/類的集合,以繼承機制將類組織成一個層次結構,把程序運行視為相互服務的對象們之間的對話。
簡單的說,編程範式是程序員看待程序應該具有的觀點。下面是常見的編程範式和常用的一些編程語言:
圖:編程範式與編程語言
一般而言,編程語言的設計者常常讓該語言支持某一特定的範式,如Java語言只支持面向對象的範式;但編程語言也可能支持多種範式,如C++語言支持面向對象的範式,同時也支持過程式範式。我們很小心的說一些語言支持某種編程範式,而不說它們實踐或貫徹特定的編程範式,因為,程序員如何使用一種語言僅僅依賴於程序員。
面向對象技術一方面借鑒了哲學、心理學、生物學的思考方式,另一方面,它是建立在其他編程技術之上的,是以前的編程思想的自然產物。
如果說結構化軟體設計是將函數式編程技術應用到命令式語言中進行程序設計,面向對象編程不過是將函數式模型應用到命令式程序中的另一途徑,此時,模塊進步為對象,過程龜縮到class的成員方法中。OOP的很多技術——抽象數據類型、信息隱藏、介面與實現分離、對象生成功能、消息傳遞機制等等,很多東西就是結構化軟體設計所擁有的、或者在其他編程語言中單獨出現。但只有在面向對象語言中,他們才共同出現,以一種獨特的合作方式互相協作、互相補充。
§2 庫恩與paradigm
單詞paradigm並不是通過查字典就能夠翻譯的。 雖然paradigm的原意是example 示例、pattern模式 or model.典範、範例、模型。比如說,為了幫助我們理解某些英文動詞的用法,老師會給一些例句(paradigm、example);在容易理解的計算機編程書籍中,都有大量的常式(範例)。的確,在有些計算機書籍中,將paradigm稱為「範例」——指一種示範性的模型或例子,它提供了一種組織信息的形式;面向對象的範例強調以行為和責任為基礎來組織信息【Timothy Budd,《面向對象Java編程思想》(修訂版),清華大學出版社,2002-8】。
真正使paradigm廣為流行的原因是1962年,美國科學史學家和科學哲學家托馬斯·庫恩(Thomas S. Kuhn)所著的著名書籍The Structure of Scientific Revolutions(《科學革命的結構》),其核心——範式論在自然科學家中引起強烈的共鳴,並波及社會科學的廣泛領域。
在李寶恆、紀樹立翻譯的《科學革命的結構》中,paradigm翻譯為「規范」,而在大量的哲學、社會科學中,一般稱為「範式」。
所謂「範式」,實際上就是研究立場、觀點和方法的綜合體,其內容表現為對科學研究中各種信念、認知成果、研究方法的整合與升華,是一種理論模型、框架,一種思維方式和理解現實的思想體系,以及科學共同體的最高共識。或者說:它包括三個方面:
1. 科學理論體系。
2. 運用該理論體系的心理認知因素。
3. 指導和聯繫上述兩者(理論體系和心理認知)的自然觀
【全增嘏,《西方哲學史》】
在某種程度上,類似於我們習慣的術語「世界觀」、毛澤東思想之「思想」。托馬斯.庫恩的範式論認為:通過對科學史的研究發現,科學不僅僅是某些已存在的知識體系,而是一定社會集團(科學共同體)按照一套公認的信念所進行的「專業活動」,這種活動表明,科學的發展是包括自然觀、理論體系和心理認識在內的範式的運動。而範式的運動導致科學的革命。
D. 誰知道這個github項目怎麼用vs編譯成exe
首先,這是我在CSDN上的第一篇文章,自己也是剛接觸是個初學者,如果有錯誤歡迎批評指正。
那麼初入github首先就是根據自己所需下載相應代碼,可根據搜索和README.md來查看是否是所需代碼。
下載方式我使用的是下載壓縮包方式。
選擇Download ZIP直接下載壓縮包,之後解壓後打開Visual studio在「文件-打開-文件夾」進行打開。
調試階段
成功打開後需要進行調試,在文件README.md中查看代碼的要求。以Floyd代碼為例Floyd代碼鏈接,
在VS2017下編譯和運行C語言程序
這一部分是根據文章在VS2017下編譯和運行C語言程序進行編譯的。
E. 誰可以用JAVA語言floyd演算法,幫我解決一下這個題目
這題目其實就是單純的求最長的一條路徑而已,距離函數依然滿足三角不等式,所以不用管它.
而且因為他是一棵樹,甚至都不用floyd,直接樹形遍歷都可以
F. 百度百科裡面的floyd演算法java的代碼,總是無法運行。請問是代碼有問題嗎,如何編譯啊
不能編譯運行的說法是錯誤,但是結果是否正確,我就不知道了,我不懂這個演算法
publicclassFLOYD{
int[][]length=null;//任意兩點之間路徑長度
int[][][]path=null;//任意兩點之間的路徑
publicFLOYD(int[][]G){
intMAX=100;
introw=G.length;//圖G的行數
int[][]spot=newint[row][row];//定義任意兩點之間經過的點
int[]onePath=newint[row];//記錄一條路徑
length=newint[row][row];
path=newint[row][row][];
for(inti=0;i<row;i++)
//處理圖兩點之間的路徑
for(intj=0;j<row;j++){
if(G[i][j]==0)
G[i][j]=MAX;//沒有路徑的兩個點之間的路徑為默認最大
if(i==j)
G[i][j]=0;//本身的路徑長度為0
}
for(inti=0;i<row;i++)
//初始化為任意兩點之間沒有路徑
for(intj=0;j<row;j++)
spot[i][j]=-1;
for(inti=0;i<row;i++)
//假設任意兩點之間的沒有路徑
onePath[i]=-1;
for(intv=0;v<row;++v)
for(intw=0;w<row;++w)
length[v][w]=G[v][w];
for(intu=0;u<row;++u)
for(intv=0;v<row;++v)
for(intw=0;w<row;++w)
if(length[v][w]>length[v][u]+length[u][w]){
length[v][w]=length[v][u]+length[u][w];//如果存在更短路徑則取更短路徑
spot[v][w]=u;//把經過的點加入
}
for(inti=0;i<row;i++){//求出所有的路徑
int[]point=newint[1];
for(intj=0;j<row;j++){
point[0]=0;
onePath[point[0]++]=i;
outputPath(spot,i,j,onePath,point);
path[i][j]=newint[point[0]];
for(ints=0;s<point[0];s++)
path[i][j][s]=onePath[s];
}
}
}
voidoutputPath(int[][]spot,inti,intj,int[]onePath,int[]point){//輸出i//
//到j//
//的路徑的實際代碼,point[]記錄一條路徑的長度
if(i==j)
return;
if(spot[i][j]==-1)
onePath[point[0]++]=j;
//System.out.print(""+j+"");
else{
outputPath(spot,i,spot[i][j],onePath,point);
outputPath(spot,spot[i][j],j,onePath,point);
}
}
publicstaticvoidmain(String[]args){
intdata[][]={
{0,27,44,17,11,27,42,0,0,0,20,25,21,21,18,27,0},//x1
{27,0,31,27,49,0,0,0,0,0,0,0,52,21,41,0,0},//1
{44,31,0,19,0,27,32,0,0,0,47,0,0,0,32,0,0},//2
{17,27,19,0,14,0,0,0,0,0,30,0,0,0,31,0,0},//3
{11,49,0,14,0,13,20,0,0,28,15,0,0,0,15,25,30},//4
{27,0,27,0,13,0,9,21,0,26,26,0,0,0,28,29,0},//5
{42,0,32,0,20,9,0,13,0,32,0,0,0,0,0,33,0},//6
{0,0,0,0,0,21,13,0,19,0,0,0,0,0,0,0,0},//7
{0,0,0,0,0,0,0,19,0,11,20,0,0,0,0,33,21},//8
{0,0,0,0,28,26,32,0,11,0,10,20,0,0,29,14,13},//9
{20,0,47,30,15,26,0,0,20,10,0,18,0,0,14,9,20},//10
{25,0,0,0,0,0,0,0,0,20,18,0,23,0,0,14,0},//11
{21,52,0,0,0,0,0,0,0,0,0,23,0,27,22,0,0},//12
{21,21,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0},//13
{18,41,32,31,15,28,0,0,0,29,14,0,22,0,0,11,0},//14
{27,0,0,0,25,29,33,0,33,14,9,14,0,0,11,0,9},//15
{0,0,0,0,30,0,0,0,21,13,20,0,0,0,0,9,0}//16
};
for(inti=0;i<data.length;i++)
for(intj=i;j<data.length;j++)
if(data[i][j]!=data[j][i])
return;
FLOYDtest=newFLOYD(data);
for(inti=0;i<data.length;i++)
for(intj=i;j<data[i].length;j++){
System.out.println();
System.out.print("From"+i+"to"+j+"pathis:");
for(intk=0;k<test.path[i][j].length;k++)
System.out.print(test.path[i][j][k]+"");
System.out.println();
System.out.println("From"+i+"to"+j+"length:"
+test.length[i][j]);
}
}
}
G. 遺傳演算法求最短路徑
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#include<string>
using namespace std;
#define OVERFLOW -2
#define OK 1
#define ERROR 0
#define INFINITY 200//最大值
#define MAX_VERTEX_NUM 20//最大頂點個數
typedef char VertexType;//定義為char類型
//以下是全局變數,用於保存弗洛伊德演算法的路徑和長度
int D[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//記錄最短路徑長度
int P[MAX_VERTEX_NUM][MAX_VERTEX_NUM][MAX_VERTEX_NUM];//記錄最短路徑標記
//以下是全局變數,用於保存迪傑斯特拉演算法的路徑和長度
int Distance[MAX_VERTEX_NUM];
VertexType former[MAX_VERTEX_NUM];//終點的前一個頂點
bool final[MAX_VERTEX_NUM];//記錄頂點是否在V-S中
typedef struct ArcCell
{
int adj; //頂點關系類型
int weight; //該弧相關信息的指針,在此記錄為權值
}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct
{
VertexType vexs[MAX_VERTEX_NUM]; //頂點向量
AdjMatrix arcs; //鄰接矩陣
int vexnum; //頂點數
int arcnum; //弧數
}MGraph;
void InitialMGraph(MGraph &G)//初始化
{
G.arcnum=G.vexnum=0; //初始化邊數跟頂點數都為零
for(int i=0;i<MAX_VERTEX_NUM;i++)
for(int j=0;j<MAX_VERTEX_NUM;j++)
{
if(i==j)
G.arcs[i][j].weight=0;
else
G.arcs[i][j].weight=INFINITY; //初始化為200,以200認為是無窮大
}
}
void InsertVex(MGraph &G,VertexType v)//插入頂點
{
if(G.vexnum<=MAX_VERTEX_NUM)
G.vexs[G.vexnum++]=v;
}
void InsertArc(MGraph &G,VertexType v1,VertexType v2)//插入邊
{
int m,n;
G.arcnum++;
for(int k=0;k<G.vexnum;k++)
{
if(G.vexs[k]==v1)
m=k;
if(G.vexs[k]==v2)
n=k;
}
//插入
ArcCell A;
cout<<"請輸入權值:";
cin>>A.weight;
G.arcs[m][n].weight=A.weight;
}
//迪傑斯特拉最短路徑,假設始點就存儲在數組中的第一個
void ShortestPath_DIJ(MGraph G,int v0)
{
//初始化距離
for(int v=0;v<G.vexnum;++v)
{
final[v]=false;
Distance[v]=G.arcs[v0][v].weight;
if(Distance[v]<INFINITY&&Distance[v]!=0)
{
former[v]=G.vexs[v0];
}
else
former[v]='#';
}
final[v0]=true;
former[v0]=G.vexs[v0];
for(int i=1;i<G.vexnum;++i)//剩餘的G.vexnum-1個頂點
{
int w;
int min=INFINITY;
int v=-1;
for(w=0;w<G.vexnum;++w)
{
if(!final[w]&&Distance[w]<min)
{
v=w;
min=Distance[w];
}
}
if(v!=-1)
{
final[v]=true;//將離頂點V0最近的頂點v加入S集合中
for(w=0;w<G.vexnum;++w)//更新當前的最短路徑及距離
{
if(!final[w]&&(min+G.arcs[v][w].weight<Distance[w])&&G.arcs[v][w].weight<INFINITY)
{
Distance[w]=min+G.arcs[v][w].weight;
former[w]=G.vexs[v];
}
}
}
}
}
//輸出迪傑斯特拉中的最短路徑
void output_ShortestPath_DIJ(MGraph G,int v0)
{
int i;
for(i=1;i<G.vexnum;i++)
{
cout<<G.vexs[v0]<<"->"<<G.vexs[i]<<":";
if(Distance[i]!=INFINITY)
{
cout<<"最短路徑長度為:"<<Distance[i]<<" 最短路徑的前一個頂點為:"<<former[i];
cout<<endl;
}
else
cout<<"此兩頂點之間不存在路徑"<<endl;
}
}
//弗洛伊德最短路徑
void shortestPath_FLOYD(MGraph G)
{
for(int v=0;v<G.vexnum;++v)
{
for(int w=0;w<G.vexnum;++w)
{
D[v][w]=G.arcs[v][w].weight;
for (int k=0;k< G.vexnum;k++)
P[v][w][k]=-1;
if(D[v][w]<INFINITY) //從v到w有直接路徑
P[v][w][v]=w;
}
}
for(int k=0;k<G.vexnum;++k)
{
for(int v=0;v<G.vexnum;v++)
for(int w=0;w<G.vexnum;++w)
if(D[v][w]>D[v][k]+D[k][w])
{
D[v][w]=D[v][k]+D[k][w];
for(int i=0;i<G.vexnum;i++)
{
if(P[v][k][i]!=-1)//原來存了頂點
P[v][w][i]=P[v][k][i];
else
P[v][w][i]=P[k][w][i];
}
}
}
}
//輸出弗洛伊德中的最短路徑
void output_shortestPath_FLOYD(MGraph G)
{
for(int i=0;i<G.vexnum;++i)
{
for(int j=0;j<G.vexnum;++j)
{
if(i!=j)//自己不能到達自己
{
cout<<G.vexs[i]<<"->"<<G.vexs[j]<<":";
if(D[i][j]==INFINITY)
{
cout<<"此兩頂點之間不存在路徑"<<endl;
}
else
{
cout<<"最短路徑長度為:"<<" "<<D[i][j]<<" ";
cout<<"最短路徑為:";
cout<<G.vexs[i];
for(int k=i;k!=-1;k=P[i][j][k])
{
if(k!=i)
cout<<G.vexs[k];
}
cout<<endl;
}
}
}
}
}
int main()
{
int num1;//頂點個數
int num2;//弧個數
cout<<"請輸入頂點個數:";
cin>>num1;
cout<<"請輸入弧個數:";
cin>>num2;
VertexType v;
MGraph G;
InitialMGraph(G);
cout<<"請輸入頂點的信息:"<<endl;
for(int i=0;i<num1;++i)
{
cin>>v;;
InsertVex(G,v);
}
VertexType v1,v2;
for(int j=0;j<num2;++j)
{
cout<<"請輸入兩個結點數據來表示的邊:";
cin>>v1>>v2;
InsertArc(G,v1,v2);
}
ShortestPath_DIJ(G,0);
cout<<"迪傑斯特拉中的最短路徑如下:"<<endl;
output_ShortestPath_DIJ(G,0);
cout<<endl<<endl;
shortestPath_FLOYD(G);
cout<<"弗洛伊德中的最短路徑如下:"<<endl;
output_shortestPath_FLOYD(G);
return 0;
}
H. 求數據結構公交線路咨詢的代碼用java,其中求最短路徑用Floyd演算法
不知道你想怎麼搞 反正感覺A*演算法也可以,網上一大堆,還有就是Dijkstra演算法
I. 常見的計算機英語專業詞彙
常見的計算機英語專業詞彙
作為計算機相關專業學生,面試或者筆試時不可避免地會遇到與專業相關的'問題,而考核專業問題的時候,又不可避免地涉及到很多專業詞彙,這就需要求職者掌握好常見的專業詞彙,才能在闡述問題時得心應手,避免出現表達錯誤引起誤解。以下是計算機專業常見相關詞彙。
計算機導論 Introction to Computer Science
高等數學 Advanced Mathematics
應用創造學 Creativity Methodology
工程圖學與計算機繪圖 Engineering Graphics and Computer Graphics Drawings
面向對象程序設計 Object-oriented Programming
概率論與數理統計 Probability Theory and Statistics
離散數學 Discrete Mathematics
軟體工程概論 Introction to Software Engineering
數據結構 Data Structures
計算機組成與結構 Computer Organization and Architecture
操作系統 Operating System
計算機網路 Computer Network
演算法設計與分析 Algorithm Design and Analysis
軟體工程經濟學 Software Engineering Economics
Java技術 Java Technology
UML建模 UML Modeling (Unified Modeling Language Modeling)
資料庫系統概論 Introction to Database Systems
編譯原理 Principle of Compiler
軟體體系結構 Software Architecture
程序分析 Program Analysis
軟體過程與項目管理 Software Process and Project Management
系統分析與設計 System Analysis and Design
程序測試 Program Testing
模式識別 Pattern Recognition
嵌入式程序設計 Embedded Programming
人機交互技術 Human-computer Interaction Technology
雲計算 Cloud Computing
計算機與網路安全 Computer and Network Security
計算機圖形學 Computer Graphics
數據挖掘技術 Data Mining Technology
分布對象技術 Distributed Object Technology
網路多媒體 Internet Multimedia
網路程序設計 Network Programming
.NET程序設計 . NET Programming Design
協議工程 Protocol Engineering
5.4.2 操作系統相關術語
虛擬機 Virtual Machine
訪問控制列表 Access Control List
線程 Thread
多線程 Multithreading
進程 Process
守護進程 Daemon
進程間通信 IPC (Interprocess Communication)
死鎖 Deadlock
銀行家演算法 Banker’s algorithm
內存管理 Memory management
虛擬地址 Virtual address
物理地址 Physical address
引導盤 Boot Disk
頁面失效 Page Fault
後台進程/前台進程 Background Process /Foreground Process
文件傳送協議 FTP (File Transfer Protocol)
圖形用戶界面 GUI (Graphical User Interface)
許可權 Permission
移植 Port/Ported/Porting
可移植系統介面 Portable Operating System Interface
分時 Time-sharing
工作區 Workspace
工作目錄 Working Directory
窗口管理器 Window Manager
封裝器 Wrapper
5.4.3 演算法相關術語
字典 Dictionaries
堆 Heap
優先順序隊列 Priority queue
矩陣乘法 Matrix multiplication
貪心演算法 Greedy algorithm
上界/下界 Upper bound / Lower bound
最好情況/最壞情況/平均情況 Best case /Worst Case/ Average case
插入排序 Insertion sort
合並排序 Merge sort
堆排序 Heap sort
快速排序 Quick sort
動態規劃 DP (Dynamic Programming)
背包問題 Knapsack problem
霍夫曼編碼 Huffman Coding
迪傑斯特拉演算法 Dijkstra’s algorithm
貝爾曼-福德演算法 Bellman-Ford algorithm
弗洛伊德演算法 Floyd-Warshall algorithm
回溯 Back-Tracking
N皇後問題 N-Queen problem
漸進增長 Asymptotic growth(包含O-notationΩ-notation Θ-notation)
線性規劃 Linear programming
隨機數生成 Random number generation
圖的生成 Generating graphs
圖論-多項式演算法 Graph Problems – polynomial algorithm
連通分支 Connected components
最小生成樹 Minimum Spanning Tree
最短路徑 Shortest path
NP問題 Non-Deterministic Polynomial problem
旅行商問題 Traveling salesman problem
同構 Graph isomorphism
壓縮 Text compression
最長公共子串 Longest Common Substring
最短公共父串 Shortest Common Superstring
收斂速度 Rate of convergence
5.4.4 數據結構相關術語
集合 Set Data Structures
線性方程組 Linear Equations
數據抽象 Data abstraction
數據元素 Data element
數據對象 Data object
數據類型 Data type
邏輯結構 Logical structure
物理結構 Physical structure
線性結構/非線性結構 Linear structure / Nonlinear structure
線性表 Linear list
棧 Stack
隊列 Queue
串 String
圖 Graph
插入 Insertion
刪除 Deletion
前趨 Predecessor
後繼 Successor
直接前趨 Immediate predecessor
直接後繼 Immediate successor
雙端列表 Double-ended queue
循環隊列 Circular queue
指針 Pointer
先進先出表(隊列) First-in first-out list
後進先出表(隊列) Last-in first-out list
棧底/棧頂 Bottom /Top
壓入/彈出 Push/ Pop
隊頭/隊尾 Front/ Rear
上溢/下溢 Overflow/ Underflow
數組 Array
矩陣 Matrix
多維數組 Multi-dimensional array
以行為主/以列為主的順序分配 Row major order / Column major order
三角矩陣 Triangular matrix
對稱矩陣 Symmetric matrix
稀疏矩陣 Sparse matrix
轉置矩陣 Transposed matrix
鏈表 Linked list
線性鏈表 Linear linked list
單鏈表 Single linked list
多重鏈表 Multilinked list
循環鏈表 Circular linked list
雙向鏈表 Doubly linked list
十字鏈表 Orthogonal list
廣義表 Generalized list
指針域 Pointer field
頭結點 Head node
頭指針/尾指針 Head pointer/ Tail pointer
空白串 Blank string
空串(零串)Null string
子串 Substring
樹 Tree
子樹 Subtree
森林 Forest
根 Root
葉子 Leaf
深度 Depth
雙親/孩子/兄弟/祖先/子孫 Parents/ Children/ Brother/ Ancestor/ Descendant
二叉樹 Binary tree
平衡二叉樹 Balanced binary tree
滿二叉樹 Full binary tree
完全二叉樹 Complete binary tree
遍歷二叉樹 Traversing binary tree
二叉排序樹 Binary sort tree
二叉查找樹 Binary search tree
線索二叉樹 Threaded binary tree
哈夫曼樹 Huffman tree
有序樹/無序樹 Ordered tree / Unordered tree
判定樹 Decision tree
數字查找樹 Digital search tree
樹的遍歷 Traversal of tree
先序遍歷 Preorder traversal
中序遍歷 Inorder traversal
後序遍歷 Postorder traversal
子圖 Subgraph
有向圖/無向圖 Digraph(directed graph)/Undigraph(undirected graph)
完全圖 Complete graph
連通圖 Connected graph
非連通圖 Unconnected graph
強連通圖 Strongly connected graph
弱連通圖 Weakly connected graph
有向無環圖 Directed acyclic graph
重連通圖 Biconnected graph
二部圖 Bipartite graph
邊 Edge
頂點 Vertex
連接點 Articulation point
初始結點 Initial node
終端結點 Terminal node
相鄰邊 Adjacent edge
相鄰頂點 Adjacent vertex
關聯邊 Incident edge
入度/出度 In-degree/ Out-degree
有序對/無序對 Ordered pair/ Unordered pair
簡單路徑 Simple path
簡單迴路 Simple cycle
連通分量 Connected component
鄰接矩陣 Adjacency matrix
鄰接表 Adjacency list
鄰接多重表 Adjacency multi-list
遍歷圖 Traversing graph
生成樹 Spanning tree
拓撲排序 Topological sort
偏序 Partial order
AOV網 Activity On Vertex network
AOE網 Activity On Edge network
關鍵路徑 Critical path
線性查找(順序查找) Linear search (Sequential search)
二分查找 Binary search
分塊查找 Block search
散列查找 Hash search
平均查找長度 Average search length
散列表 Hash table
散列函數 Hash function
直接定址法 Immediately allocating method
數字分析法 Digital analysis method
平方取中法 Mid-square method
隨機數法 Random number method
內部排序 Internal sort
外部排序 External sort
選擇排序 Selection sort
基數排序 Radix sort
平衡歸並排序 Balance merging sort
二路平衡歸並排序 Balance two-way merging sort
多步歸並排序 Ploy phase merging sort
置換選擇排序 Replacement selection sort
索引文件 Indexed file
索引順序文件 Indexed sequential file
索引非順序文件 Indexed non-sequential file
多重鏈表文件 Multi-list file
倒排文件 Inverted file
5.4.5 計算機網路相關術語
埠 Port
伺服器 Server
客戶端 Client
服務訪問點 SAP (Service Access Point)
開放系統互聯 OSI (Open System Interconnection)
物理層 Physical layer
數據鏈路層 Data link layer
網路層 Network layer
運輸層 Transport layer
會話層 Session layer
表示層 Presentation layer
應用層 Application layer
TCP/IP協議 TCP / IP protocol
信道容量 Channel capacity
香農 Shannon
奈奎斯特 Nyquist
雙絞線 UTP (Unshielded Twisted Paired)
同軸電纜 Coaxial cable
光纖 Optical fiber
不歸零碼 NRZ (Non Return to Zero)
曼徹斯特編碼 Manchester coding
調制 Molation
脈碼調制 PCM (Pulse Code Molation)
增量調制 DM (Delta Molation)
同步傳輸/非同步傳輸 Synchronous transmission / ATM (Asynchronous transmission)
循環冗餘校驗 CRC (Cyclic Rendancy Check)
流量控制 Flow control
滑動窗口 Sliding window
差錯控制 Error control
幀結構 Frame structure
復用 Reuse
非對稱數字用戶線路 ADSL (Asymmetric digital subscriber line)
電路交換和分組交換 Circuit switching and packet switching
頻分多路復用 Frequency division multiplexing
信令 Signaling
數據報 Datagram
虛電路 Virtual circuit
幀中繼 Frame relay
信元 Ceil
擁塞 Congestion
反壓 Back pressure
令牌桶 Token bucket
環形/匯流排形/樹形和星形結構 Ring/ bus/ tree and star structure
區域網 LAN (local area network)
集線器 Hub
交換機 Switch
路由器 Router
網橋 Network bridge
乙太網監聽演算法 Ethernet listener algorithm
子網掩碼 Subnet mask
三次握手 Three-way handshake
地址解析協議 APP (Address resolution protocol)
瘦客戶機 Thin client
網際控制報文協議 ICMP (Internet Control Message Protocol)
網際網路群組管理協議 IGMP (Internet Group Management Protocol)
拒絕服務 Denial of service
邊界網關 Border gateway
域名系統 DNS (Domain Name System)
數據鏈路控制 DLC (Data Link Control)
互聯網電子郵件協議標准 POP (Post Office Protocol)
遠程式控制制 Remote control
簡單郵件傳送協議 SMTP (Simple Mail Transport Protocol)
;