python - 图顶点排序度问题:找到k-ordering
问题描述
给定一个图 G,一个 k-ord
dering 为 3(k 是最大度数)
要更多的cd等等。
如果存在,则查找算法。
解决方案
有几种可能的方法,具体取决于应用程序所需的复杂性等约束。
需要注意的一件事是,如果存在,贪心方法会产生有效的排序。IfV
是节点的完整列表,并且d(v)
是残差图中的度数:
order = []
while |V| > 0:
let v be the node with a minimum degree
if d(v) > k return false
add v to order
remove v from the graph
return order
主要挑战是维护尊重度数更新的节点顺序。这可以通过堆来解决,在这种情况下,斐波那契堆很有用,因为它可以在O(1)
摊销时间内更新密钥。
构建堆需要O(n)
. 每个节点移除成本O(log(n)) + O(k)
。因此,总体复杂度为O(n·log(n) + n·k)
推荐阅读
- gnuplot - 你能在gnuplot中执行一个字符串吗?
- xamarin - 如何创建带有文本和背景图像的 Xamarin 按钮
- python - 从父子关系表创建嵌套字典
- python - 为什么以下代码会给出错误-“错误:'NoneType' 对象不可调用”?
- azure - Azure 搜索筛选器 search.ismatch 函数不适用于混合特殊字符(如 hiphen 和单引号)
- java - 尽管遵循在线说明等,但 Netbeans servlet 错误仍然存在
- sql-server - Liquibase:捕获存储过程、函数和触发器
- java - 构建多模块java maven项目
- javascript - 调用 cubeJs 后端 API 时 Cube JS 不获取新记录
- node.js - 在 NodeJS 中从视频中获取缩略图时面临问题