- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在寻找一种算法来“反转”(反转?从里到外?)有向图:
A* # I can't ascii-art the arrows, so just
/ \ # pretend the slashes are all pointing
B C # "down" (south-east or south-west)
/ / \ # e.g.
G E D # A -> (B -> G, C -> (E -> F, D -> F))
\ /
F
我使用的表示是不可变的真正的 DAG(没有“父”指针)。我想以某种方式遍历图表在构建具有等效节点的“镜像”图时,但是节点间关系方向倒转。
F*
/ \
G* E D # F -> (E -> C -> A, D -> C -> A), G -> B -> A
\ \ / #
B C # Again, arrows point "down"
\ / #
A #
所以输入是一组“根”(这里是{A})。输出应该是结果图中的一组“根”:{G, F}。 (根我的意思是一个节点没有传入的引用。叶子是没有出站的节点引用资料。)
输入的根成为输出的叶子和签证反之亦然。转换应该是其自身的逆。
(出于好奇,我想向我正在使用的库添加一个功能表示用于结构查询的 XML,我可以通过它映射每个节点第一棵树到它在第二棵树中的“镜像”(然后返回再次)为我的查询规则提供更多的导航灵 active 。)
最佳答案
遍历图形构建一组反向边和叶节点列表。
使用叶(现在是根)节点开始对反向边执行拓扑排序。
根据从排序列表末尾开始的反转边构造反转图。由于节点是按反向拓扑顺序构造的,因此可以保证在构造节点之前已经构造了给定节点的子节点,因此可以创建不可变表示。
如果您将结构用于跟踪与节点关联的两个方向上的所有链接的中间表示,则这是 O(N),或者如果您使用排序来查找节点的所有链接,则为 O(NlnN)。对于小型图或不受堆栈溢出影响的语言,您可以延迟构建图而不是显式执行拓扑排序。因此,这在一定程度上取决于您正在实现的内容,这会有多不同。
A -> (B -> G, C -> (E -> F, D -> F))
original roots: [ A ]
original links: [ AB, BG, AC, CE, EF, CD, DF ]
reversed links: [ BA, GB, CA, EC, FE, DC, FD ]
reversed roots: [ G, F ]
reversed links: [ BA, CA, DC, EC, FE, FD, GB ] (in order of source)
topologically sorted: [ G, B, F, E, D, C, A ]
construction order : A, C->A, D->C, E->C, F->(D,E), B->A, G->B
关于algorithm - 寻求反转(反转?镜像?从里到外)DAG 的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/595029/
是否可以使用 av_seek_frame() 函数查找 I-Frame。 我面临的问题是,如果我在 AVC 文件中查找,如果我不刷新缓冲区,我会收到很多噪音。如果我刷新缓冲区,解码器不会返回一个帧,直
在我处理 SL3/SL4 应用程序并开始使用字体时,我发现缺乏有关字体策略的文档和最佳实践。例如: 是否有常见的后备字体 支持的字体集(Arial、Comic 无 MS 等)?是否有一组关于 Wind
是否有一个我可以运行而什么都不做(或很少做)而永远不会出错的命令? 我需要一些东西来测试海豚。 最佳答案 注释什么都不做(但如果根本没有命令,您的数据库驱动程序可能会提示): /* Hello, wo
我正在寻找与 Delphi (7) 一起使用的 FOSS SHA1 实现。 最好是一些小的东西,甚至可能是独立的 SHA1,而不是过去的一个巨大的库。易于安装和使用固然很好,但可靠性当然是第一位的。
团队, 我是 Azure 的初学者,对 Blob 存储日志有一些疑问 我指的是这个链接http://blogs.msdn.com/b/windowsazurestorage/archive/201
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我在周末发现了 Akavache,它看起来是一个强烈推荐的用于在 Win8 和 WP8 上缓存项目的解决方案。 但是,我找不到任何实际示例或如何使用它的文档! 有人可以分享任何示例项目或文档吗? 最佳
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
Delphi XE2 和 MySql。 我的 previous question导致建议我应该使用 MySql 的 native TIMESTAMP 数据类型来存储日期/时间。 不幸的是,我似乎找不到
DDX 技术是为将资源与类成员链接起来而创建的(例如)。在我的解决方案中,我需要在不存在于类成员 CCtreeCtrl 的资源中的 myCCtreeCtrl(CCtreeCtrl 实例)之间建立连接。
我遇到了这个问题: A shoemaker has N jobs (orders from customers) to execute. The shoemaker can work on only
typedef union { float flts[4]; struct { GLfloat r; GLfloat theta; GL
我有两个我想组合的以下形状的数组。 数组: arr1 = [["apple", "aardvark"], ["banana", "beach"]] arr2 = ['A', 'B'] 期望的结果: [
这个问题已经asked before , 但每次接受的答案只是辞职,使用 Application.MacroOptions ( VBA6 ) ( VBA7 ) 提供功能描述,但此信息实际上并未显示为工
如标题所述,-ss命令不适用于某些设备,例如华为 Mate 10。 这是我正在使用的命令以及如何获取值: Format formatter = new SimpleDateFormat("00:" +
我被指派负责修订当前的报告服务身份验证流程。目的是保持必要的安全级别,并简化授予对各个报告的访问权限的维护/配置。 我无权访问域 Controller 以修改或创建新的 AD 组。我必须与当前存在的组
我正在尝试使用 ashx 处理程序作为 HTML5 视频源。我可以做到这一点,但我无法在已经缓冲的视频上进一步前进。 我可以在使用标准 MP4 源的网络选项卡上看到向前搜索会创建另一个请求,但使用处理
#include #include class Test { char name[10]; int data; public: void getData()
您是否知道任何具有外键约束和/或提供事务支持的 SQLite 替代方案(基于可移植/平面文件/无服务器)? 最佳答案 从版本 3.6.19 开始,SQLite supports foreign key
我正在寻找一个简单的脚本,我可以在 bash 文件中使用它来检查是否有任何可用的系统更新。 我从 #!/bin/bash clear updates=$(apt list upgradeable) i
我是一名优秀的程序员,十分优秀!