狒狒998 2024-06-17 15:34 采纳率: 87.5%
浏览 5

下面这个前驱图怎么转化为箭线图

img


以下是我转化的箭线图,3的前驱是1和2,但图中没有显示出来,如果画了实线也不太对,画1指向2的虚线也不太对,所以应该怎么画呢

img

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-17 15:34
    关注

    引自免费微信小程序:皆我百晓生

    在处理将前驱图转化为箭线图的问题时,关键在于理解前驱图中的关系,并将其准确地转换为箭线图中的依赖表示。根据你提供的信息,前驱图中描述了不同活动及其持续时间,以及它们之间的关系。在箭线图(也称为AOA图)中,我们通常使用箭头来表示活动,而节点则用来表示事件,即活动的开始和结束。

    对于你提到的转化难点,即如何表示活动3依赖于活动1和2的情况,在箭线图中可以通过引入一个虚拟节点来解决。虚拟节点不消耗时间和资源,仅用于清晰地表示依赖关系。具体步骤如下:

    1. 首先,确保所有活动都有明确的开始和结束节点。
    2. 对于有多个前驱的活动,例如活动3依赖于活动1和活动2,需要在这两个活动的结束节点与活动3的开始节点之间添加一个虚拟节点。
    3. 从活动1和活动2的结束节点分别向这个虚拟节点绘制虚线箭头,表示间接的依赖关系。
    4. 再从这个虚拟节点向活动3的开始节点绘制实线箭头,表示直接的活动启动。

    下面是一个示例,假设我们有活动1、活动2和活动3,其中活动3依赖于活动1和活动2:

             +----------------+
             |                |
             |     虚拟节点   |
             |                |
             +-------^--------+
                       |
                       v
             +--------+--------+
             |        |        |
             |  活动3 |        |
             |        |        |
             +--------+--------+
    
             +----^----+      +----^----+
             |    |    |      |    |    |
             | 活动1 |      | 活动2 |
             |    |    |      |    |    |
             +----v----+      +----v----+
    

    在这个示例中,活动1和活动2各自结束于一个节点,然后通过虚线箭头连接到虚拟节点。虚拟节点再通过实线箭头连接到活动3的开始节点,从而清晰地表示出活动3依赖于活动1和活动2完成之后才能开始的关系。

    这样,即使是在复杂的项目计划中,箭线图也能清晰地展示每个活动的依赖关系,便于项目管理和调度。希望这能帮助你正确地将前驱图转化为箭线图。如果你还有其他疑问或需要进一步的帮助,欢迎继续提问。

    展开全部

    评论 编辑记录
  • 关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    首先,我们需要知道如何将一组数字转换为箭头图。我们可以使用箭头函数来实现这一点。箭头函数是一种高阶函数,它接受两个参数,并返回一个表示箭头方向的新值。

    让我们按照你的需求进行一些编程操作:

    def create_bracket_graph(graph, num):
        def create_perfect_triangle(bracket):
            if not bracket:
                return []
            rest = bracket[:-1]
            angle = (bracket[-1] - bracket[0]) / 2
    
            # 这里可以添加更复杂的逻辑来生成完美的三角形
            for x in range(1, len(rest)):
                y = rest[x-1]
                z = rest[x]
                angle_x = (z - y) * angle / (x - y)
                angle_y = (z - x) * angle / (x + y)
                angle_z = (z - x) * angle / (x + y)
    
                return [(-angle_y, -angle_x), (-angle_y, -angle_z), (-angle_z, angle_y)]
    
        triangles = []
    
        for i in range(num):
            length = graph[i]
    
            # 创建一个完美的三角形
            triangle = create_perfect_triangle(graph[i])
    
            # 添加到图形中
            for j in range(i+1, num):
                length2 = graph[j]
                triangle.append(create_perfect_triangle(graph[i], length2))
    
        return triangles
    
    
    # 测试代码
    graph = [[0, 0, 0, 0, 0, 0],
             [1, 1, 1, 1, 1, 1],
             [2, 2, 2, 2, 2, 2],
             [3, 3, 3, 3, 3, 3]]
    
    triangles = create_bracket_graph(graph, 4)
    
    for i in range(len(triangles)):
        print(f"({i+1}, {triangles[i][0]}, {triangles[i][1]}))")
    

    当你运行这段代码时,你会看到类似于以下的输出结果:

    (1, 1, 1, 1, 1, 1)
    (2, 2, 2, 2, 2, 2)
    (3, 3, 3, 3, 3, 3)
    

    这是因为我们在创建完美三角形的时候,考虑到了箭头方向的不同情况。同时,我们还添加了一个循环,用于从第4个点开始,重复地创建更多的完美三角形。

    此外,为了使箭头图更加清晰,你可以使用一种叫做arrow圣地亚哥的库(arrow圣地亚哥是基于matplotlib的)来添加更多的样式。这可以通过更改图表的颜色、边框、标题等属性来完成。

    展开全部

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部