MIT6_0002F16_ProblemSet2
实验内容:
本次实验主要围绕如何最快地走MIT进行,包括构造一些图相关的类以及实现相关的函数。主要考察递归、类、文件等方面的知识。
实验流程:
阅读实验pdf,可知实验具体要求,按照要求一步一步解决。
Problem 1: Creating the Data Structure Representation
在这一部分,主要让我们完善两个类:WeightedEdge类 以及 Digraph类,分别用来存储带权边和图。其中WeightedEdge是Edge的子类。需要注意的是这里用到 重写类的 "__ str __"函数,可以实现一个类到str的转换,之后便可以调用print或者str等调用该类
代码如下:
class WeightedEdge(Edge):
#初始化
def __init__(self, src, dest, total_distance, outdoor_distance):
Edge.__init__(self,src,dest)
self.total_distance = total_distance
self.outdoor_distance = outdoor_distance
#以一种安全地方式放回distance
def get_total_distance(self):
return self.total_distance
#以一种安全的方式返回outdoor_distance
def get_outdoor_distance(self):
return self.outdoor_distance
#重写__str__函数,之后便可以实现str的强制类型转换
def __str__(self):
return "{}->{} ({}, {})".format(self.src, self.dest, self.total_distance, self.outdoor_distance)
Digraph类只需要补充其中两个成员函数 add_node以及add_edge即可:
#将一个点加入到图中,如果该点已经在图中,返回ValueError,否则加入
def add_node(self, node):
if self.has_node(node):
raise ValueError
else:
self.nodes.add(node)
self.edges[node] = []
#将一个边加入图中,如果该边对应的点不在图中,则返回ValueError,否则将其加入