- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对有向无环图 (DAG) 很感兴趣,在阅读维基百科上的拓扑排序后,我没有发现任何特别提及涉及层编号的方法(尽管层是在绘图中被广泛提及)。使用这种方法,图形在技术上不是拓扑排序的,但知道每个节点都包含正确的层数(级别),我们总是可以判断一个特定节点是否比另一个拓扑“更大”。另一方面,只要我们没有有序列表,就无法在拓扑上枚举节点(尽管这可以通过比较节点级别的最终常规排序来完成)。
这种方法允许实现任意连接,同时保持级别信息的正确性。步骤可以是:
对于任何一组已知节点和它们之间的连接,我们只需添加所有应用 level=1 的节点,并尝试在它们之间应用所有已知连接(忽略和撤消 cicles)。
最终级别的信息不仅允许在拓扑上比较节点,还包含其他有用的信息。例如:
我想对于一些人工数据(n 个节点,每个 Node(n) 连接到 Node(n + 1))这个算法可能会非常慢。但是对于真实世界的数据,我尝试了它(维基百科类别 - 800,000 个节点 - 2,000,000 个连接)时间不错(5-10 分钟)并且级别和循环尝试的数量很低(369 个级别,1000 次循环尝试)
那么这种方法是新的还是众所周知的,只是没有广泛出现在维基百科和其他资源中?既然不是排序(技术上),是不是应该叫数据重组?
最佳答案
有一些论文是关于逐步维护图中节点的拓扑顺序的,其中对您描述的算法进行了修改。
如果图形有 n
个节点和 m
条边,则每次插入一条边都会花费 O(m + n)
时间。论文问插入k
条边需要多少时间?简单地说,O(k * (n + m))
。但事实上,对于足够大的 k
,您可以显示更好的上限 - 例如 O(k * sqrt(m + n))
。
下面是一些链接,还有更多:
http://igitur-archive.library.uu.nl/math/2007-0725-201647/2005-011.pdf
http://arxiv.org/abs/0802.1059
http://www.siam.org/proceedings/soda/2009/SODA09_120_benderm.pdf
关于algorithm - 这个DAG拓扑重组怎么调用呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10152476/
我按如下方式创建我的 Airflow DAG: dag = DAG(...) 但在多个教程和类(class)中,我看到他们像这样使用 with ... as 子句: with DAG(...) as
我对 DAG、Airflow 和 Python 语法有点陌生(我从 Java 学习编码),但我有一个 DAG,其中包含大约 10 个相互独立的任务,而我有另一个 DAG,只有在所有 10 个任务都运行
下面是 Airflow DAG 代码。当 Airflow 在本地托管和在云 Composer 上托管时,它都能完美运行。但是,DAG 本身在 Composer UI 中不可单击。我发现了一个类似的问题
我有兴趣在使用 https://airflow.apache.org/docs/apache-airflow/stable/dag-run.html#passing-parameters-when-t
我有一个 DAG(有向无环图),其顶点具有黑色或白色两种颜色中的任何一种。我需要将尽可能多的黑色顶点与图形应保持非循环的约束合并在一起。因此最终的 DAG 应该有最小值。的黑色顶点。这个问题的最佳算法
我正在尝试根据用户输入在 Airflow 中生成动态工作流。我知道可以根据文件和数据库中的数据选择它,但在所有这些情况下,工作流不会直接依赖于用户输入,如果多个用户使用相同的 dag,那么在这种情况下
我正在尝试拥有一个主 dag,它将根据我的需要创建更多 dags。我在 airflow.cfg 的 dags_folder 中有以下 python 文件。此代码在数据库中创建主 dag。该主 dag
我根据教程在 dags 文件夹中放置了一个 dag 文件,稍作修改,但它没有显示在 GUI 中或运行 airflow dags list 时。 最佳答案 回答我自己的问题:通过直接运行来检查 pyth
我根据教程在 dags 文件夹中放置了一个 dag 文件,稍作修改,但它没有显示在 GUI 中或运行 airflow dags list 时。 最佳答案 回答我自己的问题:通过直接运行来检查 pyth
有调用主 dag 中不同 dags 的任务列表。我正在使用 TriggerDagrunoperator 来完成此操作。但面临一些问题。 TriggerDagrunoperator 不会等待外部 dag
我设置了 Airflow 并运行一些 DAG,计划每天一次“0 0 * * *”。 我想检查下一次安排运行特定 dag 的时间,但我看不到我可以在管理员中的什么地方执行此操作。 最佳答案 如果你想使用
我通过包管理器在我的计算机上安装了 llc 程序(当然我已经安装了 LLVM,6.0.0 版本)。另外,我从源代码构建了它。我想要的是查看由 llvm 生成的 DAG。但是,不幸的是,我在 llc-d
我在 spark 中有一个操作,应该对数据框中的几列执行。通常,有 2 种可能性来指定此类操作 硬编码 handleBias("bar", df) .join(handleBias("baz",
Airflow 似乎跳过了我添加到/usr/local/airflow/dags 的 dags。 当我跑 airflow list_dags 输出显示 [2017-08-06 17:03:47,220
非常喜欢 Airflow 工作流调度程序,但在运行一个简单的 DAG 时遇到错误:“{jobs.py:538} 错误 - DAG 运行因 DAG 陷入僵局:TEST_SCHEDULER_DAG”。 这
我使用“pip install 'apache-airflow[statsd]' 安装了 airflow[statsd] 并安装了 statsd_exporter。现在我可以看到来自 Promethe
我想查找特定执行日期的特定 dag 的所有 dag 运行。 当我阅读文档时,有这个功能:dag_runs = DagRun.find(dag_id=self.dag_name, execution_d
我有一个 python DAG Parent Job和 DAG Child Job . Child Job中的任务应该在成功完成 Parent Job 时触发每天运行的任务。如何添加外部作业触发器?
我有一个由 TriggerDagRunOperator 触发的 DAG。它似乎运行良好,除非我尝试从 Airflow GUI 中“标记失败”或“标记成功”。当我这样做时,它总是尝试将更改应用到所有以前
Airflow 正在将所有 dags 加载到数据库中,但不会触发它们。 日志文件显示以下错误 [2020-01-05 02:55:06,226] {{dagbag.py:436}} [2020-0
我是一名优秀的程序员,十分优秀!