zoukankan      html  css  js  c++  java
  • python 图实现

    #coding:utf-8
    __author__ = 'similarface'
    
    class Graph:
        def __init__(self,label,extra=None):
            #节点是类实例
            self.name=label
            #而图是由类实例链接而成
            self.data=extra
            self.arcs=[]
    
        def __repr__(self):
            return self.name
    
        def search(self,goal):
            Graph.solns=[]
            self.generate([self],goal)
            Graph.solns.sort(key=lambda x:len(x))
            return Graph.solns
    
        def generate(self, path, goal):
            if self == goal:
                Graph.solns.append(path)
            else:
                for arc in self.arcs:
                    if arc not in path:
                        arc.generate(path + [arc], goal)
    if __name__=="__main__":
        for name in "ABCDEFG":
            exec("%s = Graph('%s')" % (name, name))
        A.arcs = [B, E, G]
        B.arcs = [C]
        C.arcs = [D, E]
        D.arcs = [F]
        E.arcs = [C, F, G]
        G.arcs = [A]
    
        A.search(G)
  • 相关阅读:
    A1035
    A1005
    A1073
    A1061
    A1058
    A1027
    A1019
    Java 操作临时文件创建与删除
    面试必会之HashMap源码分析
    springboot整合cxf框架启动报错
  • 原文地址:https://www.cnblogs.com/similarface/p/5128790.html
Copyright © 2011-2022 走看看