实验环境:
- java: java 9.0.4
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode) - git: git version 2.16.1.windows.1
- IDE: intellij IDEA
实验要求:
- FriendshipGraph graph = new FriendshipGraph();
- Person rachel = new Person("Rachel");
- Person ross = new Person("Ross");
- Person ben = new Person("Ben");
- Person kramer = new Person("Kramer");
- graph.addVertex(rachel);
- graph.addVertex(ross);
- graph.addVertex(ben);
- graph.addVertex(kramer);
- graph.addEdge(rachel, ross);
- graph.addEdge(ross, rachel);
- graph.addEdge(ross, ben);
- graph.addEdge(ben, ross);
- System.out.println(graph.getDistance(rachel, ross)); //should print 1
- System.out.println(graph.getDistance(rachel, ben)); //should print 2
- System.out.println(graph.getDistance(rachel, rachel)); //should print 0
- System.out.println(graph.getDistance(rachel, kramer)); //should print -1
实现一个有向社交图,设计Person类和FriendshipGraph类,在FriendshipGraph类中实现上述功能;
- addVertex:增加一个结点
- addEdge:增加一条有向边
- getDistance:计算距离(A->B->C,则A与C的距离为2,A与B或B与C的距离为1)
实现测试类
FriendshipGraphTest
实验思路:
类的构造看源代码即可
getDistance方法中我使用BFS而不是最短路径算法进行搜索距离,是由于每条边所代表的长度是相等的
其他详情看注释
实验收获:
学习了JUnit的使用