当前位置: 首页 > 知识库问答 >
问题:

如何在不丢失现有路径的情况下从有向图中删除顶点?

甄正信
2023-03-14

我想从有向图中删除一个顶点(称为B)而不丢失所有剩余顶点之间的现有路径。这意味着如果有一条从某个节点a到某个节点C的路径涉及到B,那么B必须被移除,但C必须仍然可以从a到达。

2)如果存在路径a<-B<-C,则删除链接a<-B和B<-C,并添加链接a<-C

3)如果有一个链接A->B或B->a(没有情况1和2中描述的指向C的链接),则删除A->B或B->a

共有1个答案

南门欣怡
2023-03-14

你的方法很好。基本上,如果您找到节点B的所有邻居并将它们彼此连接(在有向图中,在方向上这是有意义的),那么您可以确定删除B不会丢失任何路径。

如果有任何要求,例如“尽可能少地创建新连接,同时使所有节点都像移除前一样可访问”->,那么解决方案可能会更加困难,即模拟移除B节点,并使用来自每个邻居节点的dijsktra来找出哪个节点丢失了,并只为进程丢失的节点创建边。

 类似资料:
  • 通常对象映射器用于将较大的数据集映射到较小的数据集的场景(例如:对象有很多数据,但我们只想返回其中的几个)。 对象映射器通常创建一个小集合的目标对象的新实例,并从具有较大集合的源对象中设置所需字段,但我有相反的场景:我有一个已经包含一些数据的目标对象,现在我需要将具有较小数据集的新源对象映射到目标对象。 源类 目的地类别 DesObj已经包含int i和float f的值,SrcObj有Strin

  • 问题内容: 我有一张图片,但是我还没有定义来源。它有一个边框:/ 例如: 如果提供源,则边框会消失(由于css:)。 没有来源时如何删除图片周围的边框? 问题答案: 我的建议是,如果没有src =“”将其删除,您可以 或者,如果您知道url中包含一些特殊字词(例如http),则可以执行以下操作:

  • 我怎样才能找到一个有向图中的所有顶点,这样每一个顶点都可以从这个顶点到达呢?现在我只能“发明”O(v^3)ALGO--从每个顶点得到一个DFS/BFS,但我确信,有一个更快的方法来解决这个问题。 谢谢你!

  • 我需要一个apache/php来识别ffmpeg命令,而不需要指定/usr/local/bin/ffmpeg的完整格式 从命令行调用ffmpeg执行程序通过web从php调用ffmpeg不执行程序通过web从php调用 /usr/local/bin/ffmpeg执行程序 原因:php脚本调用youtube dl(编译程序)并在内部执行ffmpeg 提前感谢-尝试了ffmpeg路径:哪个ffmpeg

  • 问题内容: 我被要求编写自己的实现以删除数组中的重复值。这是我创建的。但是在对1,000,000个元素进行测试之后,花费了很长时间才能完成。有什么我可以做的改进我的算法或要删除的错误吗? 我需要编写自己的实现-请勿使用Set,HashSet或其他任何工具(例如迭代器)。只需一个数组即可删除重复项。 问题答案: 你可以借助Set集合 现在,如果你要遍历此set,它将仅包含唯一值。迭代代码是这样的:

  • 我只是想了解SpringJPA/Hibernate的某些部分是如何工作的。正如标题所说,只有在从集合中添加和删除子实体之间将实体刷新到数据库时,删除孤儿似乎才起作用,我想知道为什么。 我有一个父类,它与一个子类有一个@OneToMore关联 我正在测试让孩子在从父级删除时删除,就像这样(使用@autowiledJPARepository 如果在将子项添加到父项和删除子项之间未刷新实体管理器,则两个