问题标签 [quickgraph]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
884 浏览

c# - QuickGraph 序列化,自定义顶点和边

我的目标是存储BidirectionalGraph
由于我处理大数据,xml 文件不可用。不幸的是,该程序必须在没有数据库的情况下工作。
因此,我需要一种有效地序列化图形内存的方法。

我尝试了 .NET 序列化和 GraphML 序列化。但他们都没有工作。

使用 .Net 我得到那个错误:“没有隐式引用转换......”由于 BidirectionalGraph- 类中缺少 [Serializable] 语句。
使用 xmlwriters 我得到一个 System.NotSupportedException:“GraphML 模式不支持属性类型 MyEdge.Source”

我已经将我的自定义顶点类和边类标记为可序列化。边缘
实现 IEdge 并具有两个额外的 int 属性。
VertexClass具有int 属性以及字典和列表。

也许有人可以帮助我使 BidirectionalGraph 可序列化或获得其他解决方案?
感谢您在这件事上的帮助。

0 投票
2 回答
1600 浏览

c# - Quickgraph GraphML 反序列化中的顶点工厂

我一直在寻找这个,但找不到任何东西。

我正在尝试使用 C# 中的 Quickgraph 从 GraphML 反序列化图形。这是我用来表示顶点和边的类

我正在尝试使用 DeserializeFromGraphML 方法反序列化代码:

这是 makeTest 和 makeTest2 的代码:

所以 - 在我的 XML 文件中,我得到了 2 个顶点 - (0,0,0) 和 (1,1,1) 以及它们之间的边缘。当我反序列化它们时,边缘很好,但顶点变为(0,12,0)和(1,12,1)。必须有一些我遗漏的东西(12 个来自 makeTest 方法),但cos变量只有数字零和一个,就像图中“顶点”中的顶点位置一样(这就是我在 MessageBox 中显示的内容)

我知道乍一看可能很复杂,但也许真的很简单?我错过了什么吗?

提前致谢!

0 投票
1 回答
708 浏览

serialization - How to serialize additional edge information in QuickGraph?

I'm working with a graph dataset that could have edges of different logical meaning, like that:

I represent this domain by using the QuickGraph.TaggedEdge where TTag generic parameter is a string:

This works perfectly until the moment I try to serialize my graph to .graphml form:

Serialized edge data doesn't contain any tag information, only source and target:

What I want is something like:

So, the question is, how can I enforce this tag to be serialized?

0 投票
0 回答
813 浏览

c# - 如何使用 GraphSharp / QuickSharp 库在 WPF 项目中实现 MVVM 模式

注意:我是所有相关领域的新手(WPF、MVVM 模式、GraphSharp/QuickSharp 库)。

我正在尝试使用 GraphSharp 库显示一个简单的有向图。我浏览了这个演示,并编写了一些非常相似的代码(创建自定义 Vertex、Edge、Graph 和 GraphLayout 类型等)。

接下来,我向我的自定义 Vertex 类型添加了一个 Status 属性,并在我的 XAML 代码中实现了一个数据模板和一个样式资源(有点类似于上面链接的演示),它根据它们的 Status 属性将各种样式应用于顶点控件。为此,我必须在我的自定义 Vertex 类型中实现 INotifyPropertyChanged 接口。我还有一些其他代码可以在运行时更改顶点的 Status 属性,从而触发样式更改。到目前为止,这一切都很好。

接下来我阅读了几篇关于如何将 WPF 代码组织成模型、视图模型和视图层的文章:视图(最好只有 XAML 代码)应该只与视图模型类(通过绑定)对话,后者实现 INotifyPropertyChanged 和视图模型应该只与模型类中实现的“业务逻辑”对话。这一切听起来不错,但现在我很困惑什么属于哪里:

  • XAML 代码是视图,到目前为止它很简单。

  • 自定义的 GraphLayout 类型似乎属于视图模型层。

  • 我猜想自定义顶点、边和图形类型属于模型层。除了现在自定义顶点类型实现了 INotifyPropertyChanged,这似乎是视图模型类的一个特征。

  • 更改自定义顶点的 Status 属性的代码利用了 QuickGraph 基类的功能(例如 BidirectionalGraph.OutEdges()),因此它应该属于模型层。但是:如果自定义图属于视图模型,那么为什么模型类调用视图模型类来确定与业务逻辑相关的任何内容。

所以主要问题是:对于这样的程序,首选的类结构是什么?哪些类属于模型、视图模型和视图层?

0 投票
0 回答
102 浏览

quickgraph - 使用 Quickgraph 的公共设施网络跟踪

我计划将 quickgraph 用于公用事业网络(带有源汇节点的有向图),其中包含一些概念:

所以在 Quickgraph

提前致谢

0 投票
1 回答
1588 浏览

c# - QuickGraph查找顶点的度数

我正在使用 QuickGraph 创建一个有向无环图。我需要找到所有入度为零的顶点。我没有在图形的Vertices集合上看到这种支持,也没有看到使用 LINQ 进行过滤的方法。

这是我正在编写的示例数据结构:

我只需要此图中没有“入”边(入度 = 0)的顶点列表。

0 投票
1 回答
749 浏览

c# - 如何找出方向图中两个任意顶点之间是否存在连接?

我想知道我应该使用 Quickgraph 库 (C#) 中的哪些类和函数来找出方向图中的两个任意顶点之间是否存在连接?

我是编程的初学者,尤其是编程算法,所以请问您是否可以为我提供上述问题的示例代码,主要是因为 Quickgraph 库没有很多针对初学者的问题特定教程。特别是

图规格:

  • 导演
  • 不加权(距离并不重要,只是顶点/边之间的连通性)
  • 图形是动态的,因此可以添加/删除或编辑顶点/边。
0 投票
0 回答
60 浏览

graph-theory - 图建模:禁止路径

我正在建模一个系统,我认为有向图是首选方法。但是,我面临以下似乎微不足道但我无法解决的问题:

有三个顶点 A、B、C,我如何对图进行建模,以便有一条从

A->B 和 B->A,

A->C 和 C->A

不是B->C 也不是 C->B。

我面临的问题是,从 B 到 C 通过 A (B->A->C) 的路径当然是合法的,但实际上并非如此。

我该如何解决这个问题?使用不同的顶点(例如额外的顶点)?

由于其他约束,有向图是必要的(仅考虑具有 A->D 的顶点 D)

0 投票
1 回答
127 浏览

c# - qucik 图中的无向图表示

我正在使用QuickGraph .NET 库,它是 boost (C++) 图形库的克隆,但我有一些问题,因为我对这个库完全陌生 1- 如何在 QucikGraph 中表示无向图?我发现您可以使用以下方法在 boost 中轻松做到这一点: adjacency_list<boost::vecS, boost::vecS, boost::undirectedS> Graph; 2- 我如何为顶点分配值我有兴趣将整数值附加到顶点,但我不知道如何做到这一点:

0 投票
0 回答
1120 浏览

c# - 使用 QuickGraph 创建自定义顶点的更好方法?

我正在寻找一个具有一些自定义属性的顶点的图形。例如,有一个名为的顶点"A"也有x, y与之关联的坐标。

我通过创建一个包含其标识符 astring和 two的类来做到这一点ints。为了让该类与AddEdge我覆盖的函数很好地配合.Equals.GetHashCode因此具有相同标识符的两个顶点相等并且具有相同的哈希码,而不管任何其他属性(如坐标)

这似乎工作正常,我能够成功运行内置DijkstraShortestPathAlgorithm

问题

我的问题是,这是最好的方法吗?看起来真的很不雅。我最终写出了非常丑陋的线条,例如:

我可以很容易地让它变得不那么丑陋,但让我感到震惊的是,也许我正在做的事情有点矫枉过正。

我对 C# 有点陌生,而且我以前从未使用过 QuickGraph(或 Boost Graph)库。我只想将简单的属性附加到顶点。我在想我也可以使用每个顶点的属性维护一个单独的字典,并将顶点类保留为 astring而不是CustomVertex

想法?

全班:

创建图表看起来像