gpt4 book ai didi

algorithm - 图导航问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:22:45 25 4
gpt4 key购买 nike

我有一个组件和它们之间关系的图表。用户使用根组件开始导航。他单击组件上的展开按钮以显示与当前组件相关的新组件。

问题是当用户决定折叠节点时。我必须选择一个子树来隐藏,同时让图保持一致状态,这样就没有扩展节点与图中另一个节点缺少关系。

现在,如果组件之间存在循环/循环,我很难选择子树。为简单起见,我选择它们展开的顺序。因此,如果 A 扩展到 B 和 C,折叠 A 将隐藏它创建的节点和边。现在考虑以下场景。

[-] 表示展开状态,[+] 表示尚未展开。 A 被扩展以显示 B 和 C。然后 B 被扩展以显示 D。C 被扩展,这在 C 和退出节点 D 之间创建了一个链接,并且还创建了节点 E。现在用户决定折叠 B。因为按照扩展 D 的顺序是 B 的子节点,它将折叠并隐藏 D。这会使图形处于不一致状态,因为 C 具有到 D 的边,但如果我删除 CD 边,D 不再存在,它仍然会不一致。如果我折叠 C。并且 E 又是一个循环链接,例如到 A 将产生同样的问题。

    /-----B[-]-----\   
A[-] D[+]
\-----C[-]-----/
\
E[+]

所以大家知道我该如何解决这个问题。用户需要在图形中导航并且应该能够折叠,但我遇到了循环节点的问题,在这种情况下,如果折叠,循环中的任何节点都会使图形处于不一致状态。

最佳答案

如果子节点知道有多少父节点链接到它,您可以让子节点仅在只有一个父节点连接时自行折叠。

外推到你的例子

  • 折叠 B 会要求节点 D 折叠。
  • 节点 D 没有崩溃,因为它有两个父节点
  • B 删除了到 D 的链接(只留下 D 与一个父级)
  • 如果现在节点 C 要求 D 崩溃,它会自己崩溃。

关于algorithm - 图导航问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2736515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com