如何为每个节点和树的每个弧分配不同的值

时间:2016-05-26 10:06:10

标签: algorithm tree prolog

我想问一个有点具体的问题。我必须解决一个问题,我设法做了一些帮助。我想解释一下我做了什么然后说出我被告知我失踪了。

我做了什么:给定一个节点列表(a-b,b-c)我将节点“ids”从1返回到N(就像给它们一个名字,每个都是一个唯一的数字)。然后,我看到连接了哪些节点,并计算减去其名称/ ID给出的绝对数字(ab将为1-2,其中的abs为1.bc将具有2-3作为值并且将获得另外1个如果我有一个广告节点,我会返回1-4,所以它们的弧值为3)。 然后我返回节点列表及其ID /值,以及弧的列表及其值(1,a-b),(1,a-c)。

图形:

    6a
  5    4
1b      2e
2       3
3c      5f
1
4d




    5a
  4   3
1b      2e
1       2
3c      4f


    5a
  4    3
1b      2e
2
3c      
1
4d




    9a
  8    7    
1b      2e
 6      4
7c      6f
2       2
5d      4g
3       1
8h      3i

我已经手工完成了这个......所以仍然没有明确的算法。

我被告知我缺少的东西:每个ARC也必须有一个唯一的编号。因此,不仅节点,而且节点和弧只能有一个数字,从1到N,N是节点/弧的数量。

问题是,我完全无法解决这个问题。如果我在纸上做的话,我会得到更多,我会计算更长和更长的时间,但不确定实际上会解决任何问题,到目前为止我一无所获。

我不理解这一点的原因是树/列表a-b,b-c将具有节点:

a-3,b-2,c-1 ; and arcs: 2,a-b|1,b-c

另一个非常简单的列表如a-b,a-c将具有:

a-2,b-1,c-3 ; and arcs: 2,a-b|1,a-c

这是一种可能的解决方案,但是如果树长得更大,我就看不出每个弧如何有一个值介于1和N之间,非重复,并且每个节点都相同。这甚至可能吗?我应该如何处理这项任务?我是否缺少某种观点?

提前致谢。

编辑:因为我不清楚术语:

enumerate(CONNECTIONS_IN, NODES_OUT, ARCS_OUT)

?- enumerate([a-b,b-c], EnumNodos, EnumArcos) returns, as of right now: 

EnumNodos=[(1,a),(2,b),(3,c)]
EnumArcos=[(1,a-b), (1,a-c)]

它应该给:

 EnumNodos=[(3,a),(1,b),(2,c)]
 EnumArcos=[(1,a-b), (2,a-c)]%because each arc HAS to have an unique number from 1 to N-1 (nodes are from 1 to N)

0 个答案:

没有答案