逻辑图形生成器,可用于各种可以建模为图形数据结构的问题

coopgraph的Python项目详细描述


坐标图

逻辑图形生成器,可用于各种可以建模为图形数据结构的问题

例如:

from Graphs import Graph, Node
from dataStructs import Vector2

a = Node(name='A', pos=Vector2(0, 0))
b = Node(name='B', pos=Vector2(3, 3))
c = Node(name='C', pos=Vector2(2, 0))
d = Node(name='D', pos=Vector2(2, 1))
e = Node(name='E', pos=Vector2(3, 4))
f = Node(name='F', pos=Vector2(5, 5))


g = { a: [d],
      b: [c],
      c: [b, d, e],
      d: [a, c],
      e: [c, f],
      f: []
    }

graph = Graph(g)

然后,图形结构可用于执行各种与图形相关的分析:

两个没有出站连接的查找节点

^{pr2}$

寻找两个节点之间的最短路径

print(graph.astar(a, e))

注意,对于astar计算,可以针对一个或多个禁用器启用或禁用边。这有助于在以下情况下实施临时标准:

edges_to_disable = [value for key, value in graph.edges()][:3]

graph.disable_edges(edges_to_disable, "myDisabler")
path = graph.astar(a, e)
graph.disable_edges(edges_to_disable, "myDisabler")

也可以通过将禁用程序名称的列表传递给astar()方法直接忽略禁用程序

edges_to_disable = [value for key, value in graph.edges()][:3]
graph.disable_edges(edges_to_disable, "myIngoredDisabler")

ignored = ["myIngoredDisabler"]
path = graph.astar(a, e, ignored_disablers=ignored)

astar()调用还可以包含自定义g和h函数,以便更好地控制astar算法

def g(node1 Node, node2: Node) -> float:
    if node1.pos - node2.pos > 10:
        return 1
    else
        return .5

def h(node1 Node, node2: Node) -> float:
    if node1.pos - node2.pos > 10:
        return 100
    else
        return -100

path = graph.astar(a, e, g_func=g, h_func=h)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
MongoDB,Java:以UTC格式检索日期属性   java无法在Azure表实体中创建字节字段   java创建倒计时但显示(x1):00错误   JavaAnt:如何创建不可变的文件集?   java在存储从txt到ArrayList的行时内存不足   java是否可以基于子接口自动生成构造函数?(有或没有龙目山)   java声明泛型   java如何处理selenium中SafariDriver的警报?   javamysqldatasource中的mysql-JDBC   如果计算机关闭,java应用程序创建的XML文件的内容将消失   selenium中的java启动列表<WebElement>   java使用数据库中的名称创建PDF文件   java以编程方式调用注释处理器   Java 2D游戏优化   arraylist使用Java SimpleXml序列化字符串列表,其中列表中的每个元素都是XML中的一个元素