(2).在EDGE中需要实现的方法如下图所示:
Edge | 初始化构造方法,初始化新边的两个点和边的权值 |
checkRep | 检查表示不变性,边不为空且权值大于等于0 |
getsource | 返回边的一个点source |
gettarget | 返回边的另外点target |
getweight | 返回边的weight |
toString | 返回一条边的字符串,形式为“起点->终点权重为xx” |
在ConcreteEdgesGraph中需要实现的方法如下图所示:
ConcreteEdgesGraph | 构造方法 |
checkRep | 检查表示不变性,edges长度是大于0的实数,有起始的节点 |
Add | 顶点不为空时,添加一个顶点进入点表中 |
Set | 输入source,target,weight,分别为边的起点、终点和权值。若权值为负,返回-1。若权值为正且新边已经存在,则除去原边并添加新边。若权值为正且新边不存在,则直接添加新边。若权值为0且新边已经存在,则出去原边。只要改变了原边权值,都返回原边权值,没有权值则返回0 |
remove | 除去某个点及与它相邻的所有边。只需要遍历edges,寻找是否有边的起点或者终点为该点,直接删去即可,使用迭代器实现。 |
vertices | 返回所有的点集 |
sources | 输入一个终点,返回与它相连的所有边和起点构成的Map |
targets | 输入一个起点,返回与它相连的所有边和终点构成为的Map |
toString | 将整个图中所有点的指向转化为一条字符串输出 |
.在Vertices需要实现的方法如下图所示:
Vertex | 初始化构造方法,用点的名字创建 |
checkRep | 检查表示不变性,每个边的权值应该大于0 |
getmark | 返回点的名字mark |
getsource | 返回能到达该点的所有点和边构成的Map |
gettarget | 返回某个点能到达的所有点和边构成的Map |
addsource | 在源点Map中加入某源点,若weight不为0,则将其加入source中(若源点已存在,则更新其weight并返回原weight,不存在则直接构建新点并返回0)。若weight为0,则移除源点(不存在返回0,存在返回原weight) |
addtarget | 在终点Map中加入某终点,若weight不为0,则将其加入target中(若终点已存在,则更新其weight并返回原weight,不存在则直接构建新点并返回0)。若weight为0,则移除终点(不存在返回0,存在返回原weight) |
removesource | 在源点表中删除某起始点,并返回旧的边长 |
removetarget | 在终点表中删除某终点,并返回旧的边长 |
toString | 得到一个点的字符串表示 |
在ConcreteVerticesGraph需要实现的方法如下图所示:
ConcreteVerticesGraph | 构造方法 |
checkRep | 检查表示不变性,vertices中不能有重复点 |
Add | 顶点不为空时,添加一个顶点进入点表中 |
set | 输入source,target,weight,分别为边的起点、终点和权值。若权值为负,返回-1。若权值为正且新边已经存在,则除去原边并添加新边。若权值为正且新边不存在,则直接添加新边。若权值为0且新边已经存在,则出去原边。只要改变了原边权值,都返回原边权值,没有权值则返回0 |
remove | 除去某个点及与它相邻的所有边。只需要遍历vertices,寻找是否有与待删除点相同的名字的点直接删去即可,如果名字不相同,则在该点的源点表和终点表中寻找删去即可,使用迭代器实现。 |
vertices | 返回所有的点集 |
sources | 输入一个终点,返回与它相连的所有边和起点构成的Map |
targets | 输入一个起点,返回与它相连的所有边和终点构成为的Map |
toString | 将整个图中所有点的指向转化为一条字符串输出 |
(3).在GraphPoet中需要实现的方法如下图所示:
GraphPoet | 输入文件的路径,一行一行读入,储存在List中,然后每次取相邻的元素,在图中添加新的边 |
checkRep | 检查不变性,必须保存从语料库文件生成的图 |
poem | 输入需要进行扩充的字符串,声明声明一个StringBuilder保存,每次读取一个词,当前词作为source,下一个词作为target,然后在garph中寻找source的终点表中是否有与target的源点表中相同的元素,并且找到权值最大的和的点加入source和target之间。 |
toString | 调用ConcreteEdgesGraph中的toString方法,将整个图中所有点的指向转化为一条字符串输出 |