Java设计加权无向图

来源:互联网 发布:mac版本的greenvpn 编辑:程序博客网 时间:2024/06/05 21:16

无向图顾名思义,假设有顶点AB,把(AB)记作一条边,因为它是“无向”的,所以(BA)和(AB)的含义是一样的。

一个无向图类,应该包括的基本功能,有:

1.增加删除节点

2.增加删除边

3.遍历图

4.判定两点之间最短路径

5.判定图的连通性(图中任意两点是否都有路径)

6.判定是否为空图

7.确定图内顶点的数目

 

进一步细化:

1.遍历图可以大致分成两类,广度优先与深度优先

2.判定最短路径可以分成两种情况,一种是两个顶点间的最小边数,另一种是加权图最小权重和路径

 

根据Java本身特性可以增加的功能:

1.重写toString方法,便于调试和查看

2.遍历可以实现成迭代器模式

 

另外,还可以实现构造最小生成树操作。

 

该无向图可能需要的辅助类(接口):

1.List即列表接口

2.Map映射接口

3.堆类,实现Prim这样的MST算法可能需要

4.Stack类,用于深度优先遍历

5.Queue接口,用于广度优先遍历

6.Iterator接口,用于构造迭代器

7.Set无序集合接口

 

可能抛出的自定义异常:

1.ElementNotFoundException(元素无法找到)

2.EmptyCollectionException(空集合)

3.NonComparableElementException(元素没有实现Comparable接口)


下图是接口定义:


0 0
原创粉丝点击