首页 > 解决方案 > 在 python 中使用类函数实现图形。(任务)

问题描述

我有一个关于类功能的作业,所以只要指出我正确的方向。我不需要答案只是在可视化问题方面有一点帮助

根据我们的课程,图是由一组顶点和边组成的。 示例图

所以G = (V, E)V={v1, v2, v3, v4} and E = {(v1, v2), (v1, v3), (v2, v3), (v2, v4), (v4, v1), (v4, v3)}

我得到了一个看起来像这样的模板代码:

class Vertex:
    def __init__(self, value=0):  # CAN ADD VAR
        self.key = None
        self.value = value

class Edge:
    def __init__(self, k1, k2, value=0):  # CAN ADD VAR
        self.key = (k1, k2)
        self.value = value

class Graph:
    def __init__(self):  # DO NOT MODIFY
        self._vertice = list()
        self._edges = list()
        self._vkeys = set()
        self._ekeys = set()

    def getV(self):
        return self._vertice[:]

    def getVkeys(self):
        return set(self._vkeys)

    def getE(self):
        return self._edges[:]

    def getEkeys(self):
        return set(self._ekeys)

我应该使用这个类来实现一个图并制作另一个处理有向图和无向图的类函数,并判断它们是否具有欧拉路径

class DiGraph(Graph):
    def euler(self):

我只是不知道如何看待 Graph 类。我是否只是将其视为一组顶点和边,就像所描述的课程一样?

({Vertex},{Edge})

我希望有人能给我一个提示

标签: pythonpython-3.x

解决方案


在这种情况下,您有一个基类Graph。它包含图表的所有参数。之类的东西edgesvertices等等。然后你有DiGraphwhich 继承自Graph。基类中的所有东西Graph都可以在DiGraph. DiGraph有一个附加功能euler。从这个euler实现中,您应该访问变量Graph并解决问题。

更新

要向此类添加顶点或边,您必须从外部访问它:

graph = Graph()
graph._vertice.append(Vertex())

您可以在 中创建一些辅助函数Graph来添加或操作它。

这是一个关于继承 int python 的教程:
https ://docs.python.org/3/tutorial/classes.html
https://www.w3schools.com/python/python_inheritance.asp


推荐阅读