哈工大软件构造实验二心得体会2

本文详细介绍了图数据结构的实现,包括Edge、ConcreteEdgesGraph、Vertex和ConcreteVerticesGraph类的实现方法。内容涵盖了边的初始化、表示不变性检查、获取节点和权值、添加和删除节点、获取连接边的映射以及字符串表示。同时,还阐述了GraphPoet如何根据文件数据生成图,并进行字符串输出。文章深入探讨了图的构建、操作和表示,对于理解图算法有重要指导意义。
摘要由CSDN通过智能技术生成

(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方法,将整个图中所有点的指向转化为一条字符串输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值