Python_自定义有向图

directedGraph.py

 1 class DirectedGraph(object):
 2     def __init__(self,d):
 3         if isinstance(d,dict):
 4             self.__graph = d
 5         else:
 6             self.__graph = dict()
 7             print(‘Sth error‘)
 8
 9     def __generatePath(self,graph,path,end,results):
10         curret = path[-1]
11         if curret == end:
12             results.append(path)
13         else:
14             for n in graph[curret]:
15                 if n not in path:
16                     self.__generatePath(graph,path+[n],end,results)
17
18     def searchPath(self,start,end):
19         self.__results = []
20         self.__generatePath(self.__graph,[start],end,self.__results)
21         self.__results.sort(key=lambda  x:len(x))   #按所有路径的长度进行排序
22         print(‘The path from ‘,self.__results[0][0],‘to‘,self.__results[0][-1],‘is:‘)
23         for path in self.__results:
24             print(path)
25 d={‘A‘:[‘B‘,‘C‘,‘D‘],
26     ‘B‘:[‘E‘],
27     ‘C‘:[‘D‘,‘F‘],
28     ‘D‘:[‘B‘,‘E‘,‘G‘],
29     ‘E‘:[‘D‘],
30     ‘F‘:[‘D‘,‘G‘],
31     ‘G‘:[‘E‘]}
32 g=DirectedGraph(d)
33 g.searchPath(‘A‘,‘D‘)
34 g.searchPath(‘A‘,‘E‘)
35
36 ‘‘‘输出结果
37 The path from  A to D is:
38 [‘A‘, ‘D‘]
39 [‘A‘, ‘C‘, ‘D‘]
40 [‘A‘, ‘B‘, ‘E‘, ‘D‘]
41 [‘A‘, ‘C‘, ‘F‘, ‘D‘]
42 [‘A‘, ‘C‘, ‘F‘, ‘G‘, ‘E‘, ‘D‘]
43 The path from  A to E is:
44 [‘A‘, ‘B‘, ‘E‘]
45 [‘A‘, ‘D‘, ‘E‘]
46 [‘A‘, ‘C‘, ‘D‘, ‘E‘]
47 [‘A‘, ‘D‘, ‘B‘, ‘E‘]
48 [‘A‘, ‘D‘, ‘G‘, ‘E‘]
49 [‘A‘, ‘C‘, ‘D‘, ‘B‘, ‘E‘]
50 [‘A‘, ‘C‘, ‘D‘, ‘G‘, ‘E‘]
51 [‘A‘, ‘C‘, ‘F‘, ‘D‘, ‘E‘]
52 [‘A‘, ‘C‘, ‘F‘, ‘G‘, ‘E‘]
53 [‘A‘, ‘C‘, ‘F‘, ‘D‘, ‘B‘, ‘E‘]
54 [‘A‘, ‘C‘, ‘F‘, ‘D‘, ‘G‘, ‘E‘]
55 ‘‘‘
时间: 2024-08-25 05:08:33

Python_自定义有向图的相关文章

Python_自定义递归的最大深度

自定义递归的最大深度 python默认的最大递归深度为998,在有些情况下是不够用,需要我们自行设置.设置方式如下: import sys sys.setrecursionlimit(num) # num类型为int型,为自定义设置的最大递归深度 加在递归代码的前边即可. 原文地址:https://www.cnblogs.com/ZN-225/p/10623725.html

TensorFlow实战--阅读笔记part1

这本书适合看过官方文档或其他基础教程的人,讲的多是些具体网络的实现 一.tensorflow基础 tensorflow的操作流程 1. 自定义节点,自定义有向图,一般是把整个流程图都定义完整 每个需要看输出结果的节点都必须有显式地进行定义,形式如 node=......  比如2,3,4,5,6行等 对于不需要进行输出的节点可以不进行显示定义,比如Add 2. 通过Session的run方法进行执行计算图 每次run都是指定一个节点计算,比如说: tf.Session.run(ReLU) 我们要

Python_网络编程_socket()

什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. 详细资料查看菜鸟教程http://www.runoob.com/python3/python3-socket.html 案例1 - 实现连接: 1.1服务端 # -*- coding: UTF-8 -*- # Filename : Python_网络编程_服务器端.py #引入模块 import socket,sy

邻接表有向图

一.介绍 邻接表有向图是指通过邻接表表示的有向图. 上面的图G2包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"<A,B>,<B,C>,<B,E>,<B,F>,<C,E>,<D,C>,<E,B>,<E,D>,<F,G>"共9条边. 上图右边的矩阵是G2在内存中的邻接表示意图.每一个顶点都包含一条链表,该链表记录了"该顶点所对应的出边的另一

Linux centos下让alias自定义永久生效(+常用的别名)

alias可以简化一些复杂的命令串,使一个单词或简化后的命令即可实现复杂(通常是带很多参数的长串)命令. 基本用法: alias 简化命令='实际的长串命令'    //实际长串命令通常为'原命令 -/选项参数' eg. alias ll='ls -a' 获取别名: alias        //即可查看当前设定的所有alias别名 取消别名: unalias 简化命令 eg. unalias ll            //取消ll的别名 永久生效: 直接使用alias命令定义的别名,重启后就

MVC4 自定义错误页面(三)

一.概述 MVC4框架自带了定义错误页,该页面位于Shared/Error,该页面能够显示系统未能捕获的异常,如何才能使用该页面: 二.使用步骤: 1.配置WebConfig文件,在System.Web节点下加上 <customErrors mode="On"  defaultRedirect="~/Shared/Error" /> 翻阅一些大神写的博客,在他们的博客中指出defaultRedirect是指向错误页面的URL,可是经过本人测试的时候,发现

自定义及发布一个webservice服务

自定义及发布一个webservice服务    - 声明 某个业务服务为webservice服务       通过@webservice 注解来声明    - 发布webservice服务       Endpoint.publish()发布 (默认对public修饰的方法进行发布)    - 通过wsimport生成本地代理来访问自己发布的webservice       wsimport 1.发布自定义webservice phone.java package ws.myWebService

前端angularJS利用directive实现移动端自定义软键盘的方法

最近公司项目的需求上要求我们iPad项目上一些需要输入数字的地方用我们自定义的软键盘而不是移动端设备自带的键盘,刚接到需求有点懵,因为之前没有做过,后来理了一下思路发现这东西也就那样.先看一下实现之后的效果: 实现的效果就是当点击页面中需要弹出软键盘的时候软键盘弹出,浮在页面的中间,和模态框一样的效果,可以在软键盘中输入任何数字,附带的功能有小数点.退格.清空.确定等功能.当在键盘上点击数字的时候页面中的表单中实时的添加对应的数字,上图中可以看到. 产品经理那边给的原因是iPad屏幕本来就小,如

自定义input[type=&quot;checkbox&quot;]的样式

对复选框自定义样式,我们以前一直用的脚本来实现,不过现在可以使用新的伪类 :checkbox 来实现. 如果直接对复选框设置样式,那么这个伪类并不实用,因为没有多少样式能够对复选框起作用.不过,倒是可以基于复选框的勾选状态借助组合选择符来给其他元素设置样式. 很多时候,无论是为了表单元素统一,还是为了用户体验良好,我们都会选择 label 元素和 input[type="checkbox"] 一起使用.当<label>元素与复选框关联之后,也可以起到触发开关的作用. 思路: