我想问一个有点具体的问题。我必须解决一个问题,我设法做了一些帮助。我想解释一下我做了什么然后说出我被告知我失踪了。
我做了什么:给定一个节点列表(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)