zoukankan      html  css  js  c++  java
  • 数据结构关于AOV与AOE网的区别

    AOV网,顶点表示活动,弧表示活动间的优先关系的有向图。

      即如果a->b,那么a是b的先决条件。

    AOE网,边表示活动,是一个带权的有向无环图,

      其中顶点表示事件,弧表示活动,权表示活动持续时间。

    按我理解,你要求拓扑序列就是AOV,求关键路径就是AOE

    具体是要实现 计算一个电力网络的东西 有很多节点互相连接 有一个现成的算法可以计算节点之间断路的风险
    现在算法已经弄好了 但是网状的结构如何在c++中实现?
    我不是学计算机的,因为会一点编程被人赶鸭子上架来干这个。。。
    希望指出一点思路就可以了

    c/c++的话,可以自己定义一个结构体。

    按照你描述的情况,这个结构体或者类,可以定义为如下式样(推荐定义成类):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class ElectricNode
    {
      // 这里仅提供一些基本供参考的成员定义,我也不知道你要保存什么东西
      public:
          ElectricNode();
          virtual ~ElectricNode();
           
      private:
      // 这里定义一些这个节点相关的信息(不是太懂,猜想比如有节点的电压啊、最大允许的电流负荷啊什么的,都能做成员变量保存在这里,这些是节点相关的信息。)
      // 最重要的是一个网状的结构体系,因为某一个节点可能与未知数量的节点连接,而且为了便于修改连接关系,推荐使用c++现有的vector结构做拓展
      vector<ElectricNode> m_nodes_connected;  // 只保存与他相连的节点
    };
     
    整体的话,可以直接用一个vector<ElectricNode>存储所有的电网的点,因为每一个ElectricNode类都记住了这个点相关的信息以及和他相连接的点,自然就形成了一个网了。
    因为STL的这些标准容器都提供了数组越界检查、内存自动分配、以及一系列的存取查找删改相关的方法,操作起来比较方便,比自己写数组管理方便很多,也比较安全可靠。再加上类的话,能够提供一些方法,比如内一个节点自己里面就能做一些短路风险相关的计算准备工作,或者直接提供准确的数值,对于外部叠加上来的算法,不论是书写还是计算,都方便很多,就算日后调整、修改算法,也是十分方便的
  • 相关阅读:
    Sencha Touch 框架快速入门系列
    dotTrace 使用说明
    CQRS架构中同步服务的一种实现方式
    C#中循环结构的效率问题
    面向领域驱动架构的查询实现方式
    最佳 jQuery
    DWZ&MVC的探索系列——Demo演示效果
    在Windows Azure中实现和调试一个WCF服务(上)
    现代软件工程开发体验:结对编程
    结对编程是什么?
  • 原文地址:https://www.cnblogs.com/lpxblog/p/4994531.html
Copyright © 2011-2022 走看看