【发布时间】:2012-12-05 04:52:42
【问题描述】:
我正在尝试确定两个元素之间的传递关系。我正在用 c 编码。
例如:a->b 在第一行第二列的邻接矩阵中用“1”表示。
所以如果 a->b 和 b-> c 和 c->d
我想确定是否 a->d。无需更新邻接矩阵。
我采用的方法:检查与 a 对应的行中的所有 1。假设第二列中有一个 1,即 b。 [(a->b)] ,现在检查是否 b->d 如果不继续检查 B 行中的所有 1 并继续到第 26 行。
我并不真正关心复杂性。我只是希望实现这一点。
【问题讨论】:
-
您是否要检查整个图是否可传递?还是您只关心图中的 3 个特定给定元素?当你说“要识别 a->d”时,你的意思是要查看图形中是否存在 a->d?
-
我只想对元素进行传递检查。所以如果 a->b b-> 我有兴趣知道 a->c。
-
你写了“b->”,但我猜你的意思是“b->c”,对吗?你也是说如果图形包含其他元素d,以及a->b和b->d,你不在乎是否a->d?
-
换句话说:我看到您可能会问两个可能的问题,但我不确定是哪一个。可能性#1:问题的输入是一个图,输出应该是一个布尔值,指示图是否是可传递的。可能性 #2:输入是一个图加上该图中 3 个特定顶点的列表(我们将其称为 a、b 和 c),输出应该是一个布尔值,指示这 3 个顶点是否可传递。它是哪一个?还是别的什么?
-
嗨@j_random_hacker,我的问题很简单。在邻接矩阵中,如果我在第 0 行第 1 列中有 1,则表示 A -> B。类似地,如果 b->c;但我想检测到 a->c.
标签: c algorithm computation-theory adjacency-matrix