Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 试图找到在图形中导航一组边的最快方法_C#_Algorithm_Graph Algorithm - Fatal编程技术网

C# 试图找到在图形中导航一组边的最快方法

C# 试图找到在图形中导航一组边的最快方法,c#,algorithm,graph-algorithm,C#,Algorithm,Graph Algorithm,我不确定应该使用哪种算法来完成这项任务。我有一个节点图。一些节点通过需要遍历的加权线连接。但是,每个节点都通过一条加权的双向线连接。只有部分线路必须穿越,而其他线路仅用于导航。我需要找到一条路径来遍历所有这些必需的行(双向),但只遍历一次这些行。我知道我必须从哪个节点开始 现实世界的问题是,我有一个需要从CNC模式中切割的边列表。我试图减少CNC机器切割这个图案的时间。我知道我总是想从原点开始,但我不在乎图案在哪里结束,只要图案中的所有小片段都被剪掉。我知道切割每一块边缘需要多长时间,而且机器足

我不确定应该使用哪种算法来完成这项任务。我有一个节点图。一些节点通过需要遍历的加权线连接。但是,每个节点都通过一条加权的双向线连接。只有部分线路必须穿越,而其他线路仅用于导航。我需要找到一条路径来遍历所有这些必需的行(双向),但只遍历一次这些行。我知道我必须从哪个节点开始

现实世界的问题是,我有一个需要从CNC模式中切割的边列表。我试图减少CNC机器切割这个图案的时间。我知道我总是想从原点开始,但我不在乎图案在哪里结束,只要图案中的所有小片段都被剪掉。我知道切割每一块边缘需要多长时间,而且机器足够精确,可以抬起头部并从该位置开始移动到任何点。我的图不是很大,一般情况下可能多达100个节点

这与旅行推销员不同,因为我不必在同一个地方开始和结束,而且我被允许(并且被要求)多次点击一个节点

Djikstras算法不起作用,因为我需要遍历所有节点以获得所有的边切割。。。我不仅仅是想找到从A点到B点的最快路线

另外,我需要在C#中实现它,但即使我只知道什么算法,我可能也能将其编程

这是一张我需要裁剪的图案的示例图片。注意,有一条对角线和一条弧我忘了分配权重,对角线可以是50,弧可以是75:
我认为这仍然会导致旅行推销员的问题


因此,不存在Polonomic解决方案,而您的最佳选择可能是。

我相信这可以作为路线检查问题的一个案例来解决


您需要确保图形有一个欧拉回路,这可能是通过运气或将奇数顶点连接在一起实现的。

每个形状都有一个起点和终点?不确定图表是否是这里的最佳方法。。这些形状已经在图纸上布置好了,或者这也是优化问题的一部分?啊,等等,你已经计算出了每个停止点和开始点之间的距离,这些是边缘权重?正确。。。边是加权的,实际上是从节点A到节点B(或任何节点)所需的时间量。这些形状大部分是矩形,但偶尔在矩形内有一个圆弧。这些形状共享边吗?也许一个例子可以帮助澄清这个问题。是的,他们可以分享一个优势,所以只需要切割一次。我将提供一个图片的东西是削减,我只需要把它放在一起。这个解决方案看起来正确的我。在这种情况下,问题变成了如何将顶点连接在一起以完成循环,使所有顶点都为偶数,或者原点和另一个顶点为奇数。这可以看作是稳定室友问题的一个例子,它也有多项式解。我想说,这个问题基本上可以归结为中国邮递员问题,我有无向边,我可以有一个顶点,它只有一条路径。我想,到最后,我可以摆脱过去的时间,直接进入下一点。仍然在努力想出一个C#解决方案,这当然不是小事。最后。。。我最终找到了所有的奇数顶点,然后在最短的奇数顶点之间绘制了一条人工边,然后使用Fleury算法跟踪路径。它就像一个符咒,速度非常快。