小编Mic*_*man的帖子

存储/访问有向图的最佳方式

我有大约3500个防洪设施,我想将其表示为确定流路径的网络(基本上是有向图).我目前正在使用SqlServer和CTE递归检查所有节点及其上游组件,只要上游路径不分叉,这就可以工作.然而,由于增加了上游复杂性,一些查询比其他查询指数长得多,即使它们在物理上不太远(即两个或三个"下游"段).在某些情况下,我会在杀死查询之前让它超过十分钟.我正在使用一个简单的双列表,一列是设施本身,另一列是第一列中列出的设施的上游设施.

我尝试使用当前工具添加索引以帮助加快速度,但这没有任何区别.并且,对于图中可能的连接,任何节点可以具有多个上游连接,并且可以从多个"下游"节点连接.

当然有可能在数据中有循环,但我还没有找到一种好的方法来验证这一点(除了CTE查询报告最大递归计数命中时;这些很容易修复).

所以,我的问题是,我存储这些信息是错误的吗?有没有比CTE更好的方法来查询上游点?

rdbms directed-graph common-table-expression

12
推荐指数
2
解决办法
4254
查看次数

如何在.NET 4.0中生成List <T>元素的组合

我有一个与此处回答的问题类似但不完全相同的问题.

我想函数生成来自n个元素的List的所有元素的k组合.请注意,我正在寻找组合,而不是排列,并且我们需要一个改变k的解决方案(即,对循环进行硬编码是禁止的).

我正在寻找一个优雅的解决方案,b)可以用VB10/.Net 4.0编码.

这意味着a)需要LINQ的解决方案是可以的,b)使用C#"yield"命令的解决方案不是.

组合的顺序并不重要(例如,词典编纂,格雷码,什么是你),如果两者发生冲突,优雅优于表现.

(OCaml的和C#解决方案,这里将是完美的,如果他们能在VB10进行编码.)

linq vb.net algorithm combinations

8
推荐指数
1
解决办法
1万
查看次数

如何在PHP中执行有向图绘制?

我正在寻找一种在PHP中绘制有向图的方法.(如http://upload.wikimedia.org/wikipedia/commons/0/08/Directed_acyclic_graph.png).我希望它能像GD一样输出图像来创建图形图像.

我在这上面搜索了很多,但我只能找到很多用于绘制图形的库(带条等),而不是有向图.

PS我试过通过system()使用dot(linux程序),但不幸的是我没有权限在服务器上这样做.此外,我没有权利在服务器上安装PHP扩展和类似的东西,所以它应该使用普通的PHP(理想情况下只包括一个文件).

提前致谢.

php graphics graph-theory directed-graph

6
推荐指数
1
解决办法
5205
查看次数

如何将巨大(但简单)的分层XML文件加载到SQL表中

我有一个非常大的(2.5GB,55百万节点)XML文件,格式如下:

<TopNode>
    <Item id = "Something">
         <Link>A link</Link>
         <Link>Another link</Link>
         <Link>One More Link</Link>
    </Item>
    <Item id = "Something else">
         <Link>Some link</Link>
         <Link>You get the idea</Link>
    </Item>
  </TopNode>
Run Code Online (Sandbox Code Playgroud)

我想将其扁平化为以下SQL表:

 -----------------------------------------
 |  Item          |          Link        |
 -----------------------------------------
 | Something      |  A link              |
 | Something      |  Another link        |
 | Something      |  One More Link       |
 | Something Else |  Some Link           |
 | Something Else |  You get the idea    |
 |----------------|----------------------|
Run Code Online (Sandbox Code Playgroud)

我正在使用SQL2008,如果这有所作为.

什么是最简单,最有效的方法(最好使用SQL Server/.NET堆栈)从A点到B点,记住涉及的文件大小?

.net xml sql sql-server sql-server-2008

4
推荐指数
1
解决办法
1004
查看次数