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)
;