如何求有向图中从节点A到节点B的道路条数?

发布于 2024-11-09 22:28:11 字数 327 浏览 4 评论 0原文

我得到了一张图表,其中两个节点之间可以有多个拱形。

示例:

4 个节点 1→2 2→3 3->4 3->4 1->4

找出从节点 A 到节点 B 的道路条数的最佳方法是什么?

该示例的答案是 3 : 1->2->3->4 ; 1->2->3->4 和 1->4

节点和拱门的限制是 1 000 000

我只考虑暴力算法。

还有其他想法吗? 编辑:

图是非循环的

I'm given a graph which can have more than one arch between 2 nodes.

Example :

4 nodes
1->2
2->3
3->4
3->4

1->4

Which is the optim way to find the number of the roads from node A to node B ?

The answer for the example is 3 : 1->2->3->4 ; 1->2->3->4 and 1->4

Limit for nodes and archs are 1 000 000

I'm only thinking at a brute force algorithm.

Any other ideas?
Edit:

graph is acyclic

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

哽咽笑 2024-11-16 22:28:11

如果图形是循环的,那么结果是+无穷大,因为您可以根据需要多次循环运行。

一个可能适用于非循环有向图的想法:

  • 以某种方式对所有节点进行排序,以便对于任何两个连接的节点,父节点始终位于子节点之前
  • 将 0 分配给所有节点
  • 将 1 分配给起始节点
  • 迭代该节点中的节点从起始节点开始排序并执行
    • 如果该节点是结束节点,则完成
    • 对于从此节点(即它是父节点)开始的每个连接,执行以下操作
      • 将当前节点的值添加到子节点
  • 分配给结束节点的数字是您想要的结果

尽管节点中的排序并不简单。但我确信您可以找到一种算法来解决这个问题,因为这是使用 DAG 时的常见问题。

If the graph is cyclic then the result is +infinity, since you can run in a cycle as often as you like.

One idea that might work on an acyclic directed graph:

  • Order all nodes in a way so that for any two connected nodes the parent node comes always before the child node
  • Assign 0 to all nodes
  • Assign 1 to the start node
  • Iterate over the nodes in that order starting with the start node and do
    • If the node is the end node you're done
    • Foreach connection starting on this node(i.e. it is the parent) do
      • Add the value of the current node to the child node
  • The number assigned to the end node is your desired result

Ordering in the nodes isn't trivial though. But I'm sure you can find an algorithm for that, since it's a common problem when using DAGs.

甚是思念 2024-11-16 22:28:11

没有最佳的方法。该问题是一个NP完全问题。 http://en.wikipedia.org/wiki/Feedback_vertex_set

你只能找到好的解决方案

There is no optimal way. This Problem is a NP Complete problem. http://en.wikipedia.org/wiki/Feedback_vertex_set

You can only find good solutions

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文