我应该使用F#来分析图表

时间:2010-06-24 14:56:19

标签: f# graph

我们有一个程序在几个图表上执行图形分析(即最大流量问题)。 还有机会同时处理这些问题。

已经有一个庞大的C#代码库,但我们打算重写其中很大一部分。在F#中进行这种类型的操作会更好吗,而不是说C#?

谢谢,皮特

2 个答案:

答案 0 :(得分:5)

我认为这在很大程度上取决于你团队的组成 - 你对F#的了解程度如何?

我觉得我能够在F#中比C#更快地开发出任何东西。特别是,由于类型推断,高度算法程序在用F#表示时通常更简洁和可读。但是,如果您对F#没有太多经验,那么就会有一个重要的学习曲线,这意味着如果您已经熟悉该语言,那么最好坚持使用C#。

C#支持并行执行操作大致相当于F#,特别是如果您的任务不需要访问任何共享可变状态(这似乎是您的任务的情况)。如果我正确理解你的问题,你只想同时在多个图表上运行相同的操作,这对任何一种语言都应该很容易。如果您尝试并行化max-flow算法本身,那么F#可能会更容易,因为它对不可变数据类型的支持更强。 F#真正胜过C#正在进行异步操作,但这似乎不太重要。

答案 1 :(得分:1)

  

在F#中进行此类操作会更好吗,而不是说C#?

是的,这正是F#理想的问题。

F#.NET Journal文章* The A******* algorithm *(2010年4月15日)描述了与您的问题类似的路径查找解决方案的设计和实现。如果您无法找到使用F#解决的问题,您可能希望研究一些用OCaml编写的现有图形理论程序。

您可能会发现使用不可变数据结构更容易。例如,将图表表示为从源节点到其边缘所导致的目标节点集的映射。