【问题标题】:Generating all triples from a graph?从图中生成所有三元组?
【发布时间】:2011-08-01 10:17:34
【问题描述】:

我想从图表中生成所有三元组。第一个“集合”中的所有三元组都是 1,2,3 和 1,3,2 和 3,2,1。我对这组的另一个三元组(即 2,1,3 或 3,1,2 )不感兴趣。我该怎么做?

【问题讨论】:

    标签: php algorithm math graph combinatorics


    【解决方案1】:

    正如问题的 cmets 中所讨论的,墓志铭的设置究竟是什么并不是很清楚,并且出于某种原因,他/她似乎不愿意澄清。但是让我们假设“图”实际上只是由一个距离矩阵表示(这可能是问题中的数字和 X 的混乱应该显示的内容),每对顶点都有一个实际的数字距离。

    在这种情况下,这里没有什么非常图形化的事情;每对顶点都有一条边,无一例外;我们所能做的就是枚举每个顶点的三元组。

    对于三个顶点 a,b,c 的每个 集合,我们需要检查 d(a,b)

    for i from 0 to n_vertices-3
      for j from i+1 to n_vertices-2
        for k from j+1 to n_vertices-1
          # now i,j,k are three distinct vertices, and every set of three vertices
          # will occur once as we run through the loops.
          a = distances[i,j]
          b = distances[i,k]
          c = distances[j,k]
          if a>b+c or b>a+c or c>a+b
            triangle inequality is violated; complain
    

    如果您的图表以距离矩阵以外的方式表示,或者如果很多边可能不存在,那么您需要做一些不同的事情。

    (注意:如果您的图应该满足三角不等式,那么可以说它不应该丢失任何边,除非它实际上是断开的。这取决于距离是否旨在“从 x 到 y 的整体最短距离"(在这种情况下,如果三角不等式失败,那么某些东西就被破坏了,并且连通图中不应该有缺失的边)或“从 x 到 y 的直接路径的距离”(在这种情况下,如果三角不等式失败,它仅仅表明据称直接路径不值得使用)。)

    【讨论】:

    • :谢谢,但你能删除你的答案吗?我想删除我的问题?这可能吗?
    • 哇,这是非常糟糕的行为。只是回顾一下历史:你问一个问题。 (不幸的是,这是一个非常不清楚的问题。)它得到了一个答案,你接受了。但是然后(大概是因为您不喜欢在记录上出现负分的东西)您不接受答案,删除问题中使其有意义的所有内容,然后您要我删除以前的内容在剔除问题之前有用的答案?真的吗?
    • 是的。我认为您的回答也不是很好,而且您看到我经常被否决。因此,这个问题一点也不有趣,它给了我负面的声誉。请!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2013-06-05
    • 2014-10-08
    • 2013-11-30
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    相关资源
    最近更新 更多