如何获取不同路径的样本?

时间:2015-06-11 18:21:08

标签: algorithm math graph computer-science graph-theory

说我有一个"半"有向的,加权的,图形(一些边缘是无向的,一些是有向的)。

考虑两个节点A和B.考虑从节点A到节点B的所有路径的集合。

我基本上想要所有这些路径的X个样本。我不希望这些样品过于接近"走向理想的道路。从本质上讲,我希望它们在解决方案的空间上相对分散。我想要包含循环路径,我知道它使可能路径的集合无限。因此,我希望路径相对接近理想路径,但仍然不太接近。这显然是对问题的这个方面非常模糊,非严格的描述,这就是为什么如果可能的话,我希望能够指定一些参数来控制我的样本的接近程度。

这些是我到目前为止所考虑的解决方案:

1)使用某种算法给我X最短路径。问题是样本与理想路径太相似了。

2)执行以下操作:

     a) Run A*/Dijikstra's to find the ideal path.
     b) Remove X% of the edges that form the ideal path.
     c) Run A*/Dijistra's again to find the second sample. The fact that a portion of the edges have been removed from the ideal path, should mean that this second sample should be quite different.
     d) Remove X% of the edges that form the second sample.
     e) Repeat.

问题在于我担心对于大量样本(10000+),会删除大量边缘,使得稍后拍摄的样本与之相比非常非常不同理想的道路。

有没有人对如何更好地解决问题有任何想法?

图表非常大(100000多个节点和边缘)。算法的速度和性能非常重要,但如果有必要,我可以事先进行大量的预处理。

为什么我需要这样做:基本上,在我们的"实际图表"中,每个边包含两个权重。我们希望找到最大化第二权重的路径,同时受限于第一权重方面的路径长度不违反约束(即路径长度不超过理想路径的20%)就第一重量而言)。在合理的时间内无法启发式地解决是不可能的,因此我们基本上对大量随机路径进行采样,消除那些违反约束并根据第二权重选择最佳样本的路径。我们花了很多时间来解决这个问题,这是唯一能让我们接近合理计算时间的解决方案

0 个答案:

没有答案