You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

拓扑排序中的邻接表表示

拓扑排序是一种对有向无环图进行排序的算法,其中邻接表表示是一种常用的图表示方法。下面是一个使用邻接表表示图并进行拓扑排序的代码示例:

from collections import defaultdict

class Graph:
    def __init__(self, num_vertices):
        self.num_vertices = num_vertices
        self.adj_list = defaultdict(list)  # 邻接表

    def add_edge(self, u, v):
        self.adj_list[u].append(v)

    def topological_sort_util(self, v, visited, stack):
        visited[v] = True

        for neighbor in self.adj_list[v]:
            if not visited[neighbor]:
                self.topological_sort_util(neighbor, visited, stack)

        stack.append(v)

    def topological_sort(self):
        visited = [False] * self.num_vertices
        stack = []

        for v in range(self.num_vertices):
            if not visited[v]:
                self.topological_sort_util(v, visited, stack)

        return stack[::-1]

# 创建图对象
g = Graph(6)
# 添加边
g.add_edge(5, 2)
g.add_edge(5, 0)
g.add_edge(4, 0)
g.add_edge(4, 1)
g.add_edge(2, 3)
g.add_edge(3, 1)

# 执行拓扑排序
result = g.topological_sort()
print(result)

输出结果为:[5, 4, 2, 3, 1, 0],表示拓扑排序的结果。

在示例代码中,首先定义了一个Graph类,其中num_vertices表示图中顶点的数量,adj_list是一个字典,用于存储每个顶点的邻接顶点。然后,add_edge方法用于向图中添加边。

topological_sort_util是一个递归函数,用于进行深度优先搜索,并将访问过的顶点添加到栈中。topological_sort方法首先创建了一个visited数组,用于记录每个顶点是否被访问过,然后对每个未被访问过的顶点调用topological_sort_util函数

最后,通过创建一个Graph对象,添加边,然后调用topological_sort方法,即可得到拓扑排序的结果。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

万字长文带你漫游数据结构世界|社区征文

但是我们还必须知道在计算机中如何表示它。**数据结构在计算机中的表示(又称为映像),称之为数据的物理结构,又称存储结构**。数据元素之前的关系在计算机中有两种不同的表示方法:**顺序映像和非顺序映像**,并且... 计算机的世界里,充满哲学的味道。既然搜索效率有问题,那么我们不如给链表排个序。排序后的链表,还是只能知道头尾节点,知道中间的范围,但是要找到中间的节点,还是得走遍历的老路。如果我们把中间节点存储起来呢?存起...

Kubernetes 观测:基于 eBPF 的云原生深度可观测性实践

**拓扑**和 **时间**。拓扑可视化让工程师得以在全栈活动的上下文中查看来自网络、基础设施、应用程序和其他领域的遥测数据;它还提供了重要的背景信息,方便工程师了解发生故障时业务会受到怎样的影响。... ## **eBPF 具备全栈深度观测潜力**除了提供了很多预定义的 Hook 之外,eBPF 还允许我们创建内核探针 (kprobe) 或用户探针 (uprobe) 来将 eBPF 程序附加到内核或用户应用程序中的几乎任何位置。如下图所示,工程师...

干货| 火山引擎在行为分析场景下的ClickHouse JOIN优化

每个节点从其他N-1个节点拉取2中子查询的全部数据,全量存储(内存or文件),进行本地JOIN5. Coordinator节点从每个节点拉取3中的结果集,然后做处理返回给client**存在的问题:**1. 子查询数量放大2. 每个节... 从右表hash table匹配数据* 优点是:速度快 缺点是:右表数据量大的情况下占用内存### **Merge join*** 对右表排序,内部 block 切分,超出内存部分 flush 到磁盘上,内存大小通过参数设定* 左表基于 blo...

为君作磐石——人人都能搭建大规模推荐系统

最后融合多个目标的预估分来完成排序。 **对推荐系统来说,最核心的工作,便是构建精准的预估模型** 。这些年,业界的推荐模型一直朝着大规模、实时化、精细化的趋势不断演进。大规模是指数据量和模型非常大,训练样本... 它们又分别对应着训练集群不同的拓扑结构。他们非常疑惑,不知道应该选择哪一种。虽然发现了不少性能问题,但优化起来并不十分容易。经过一段时间的努力,他们优化了部分问题,将训练时间从 5 天压缩到了 3 天,勉强...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

拓扑排序中的邻接表表示-优选内容

万字长文带你漫游数据结构世界|社区征文
但是我们还必须知道在计算机中如何表示它。**数据结构在计算机中的表示(又称为映像),称之为数据的物理结构,又称存储结构**。数据元素之前的关系在计算机中有两种不同的表示方法:**顺序映像和非顺序映像**,并且... 计算机的世界里,充满哲学的味道。既然搜索效率有问题,那么我们不如给链表排个序。排序后的链表,还是只能知道头尾节点,知道中间的范围,但是要找到中间的节点,还是得走遍历的老路。如果我们把中间节点存储起来呢?存起...
Kubernetes 观测:基于 eBPF 的云原生深度可观测性实践
**拓扑**和 **时间**。拓扑可视化让工程师得以在全栈活动的上下文中查看来自网络、基础设施、应用程序和其他领域的遥测数据;它还提供了重要的背景信息,方便工程师了解发生故障时业务会受到怎样的影响。... ## **eBPF 具备全栈深度观测潜力**除了提供了很多预定义的 Hook 之外,eBPF 还允许我们创建内核探针 (kprobe) 或用户探针 (uprobe) 来将 eBPF 程序附加到内核或用户应用程序中的几乎任何位置。如下图所示,工程师...
干货| 火山引擎在行为分析场景下的ClickHouse JOIN优化
每个节点从其他N-1个节点拉取2中子查询的全部数据,全量存储(内存or文件),进行本地JOIN5. Coordinator节点从每个节点拉取3中的结果集,然后做处理返回给client**存在的问题:**1. 子查询数量放大2. 每个节... 从右表hash table匹配数据* 优点是:速度快 缺点是:右表数据量大的情况下占用内存### **Merge join*** 对右表排序,内部 block 切分,超出内存部分 flush 到磁盘上,内存大小通过参数设定* 左表基于 blo...
为君作磐石——人人都能搭建大规模推荐系统
最后融合多个目标的预估分来完成排序。 **对推荐系统来说,最核心的工作,便是构建精准的预估模型** 。这些年,业界的推荐模型一直朝着大规模、实时化、精细化的趋势不断演进。大规模是指数据量和模型非常大,训练样本... 它们又分别对应着训练集群不同的拓扑结构。他们非常疑惑,不知道应该选择哪一种。虽然发现了不少性能问题,但优化起来并不十分容易。经过一段时间的努力,他们优化了部分问题,将训练时间从 5 天压缩到了 3 天,勉强...

拓扑排序中的邻接表表示-相关内容

新功能发布记录

4 层 TCP 监听器接入云 WAF 实例 2024-03-07 网站接入 优化网站列表搜索、筛选和排序功能。 - 2024 年 1 月发布时间 功能模块 说明 相关文档 2024-01-31 全部 Open API 发布,包括网站接入、防护策略配... 2023-11-30 安全概览 概览拓扑图展示接入方式和回源信息,回源信息显示公网 IP 地址,或是 VPC 与内网 IP 地址。 安全概览 2023-11-30 网站接入 CNAME 接入方式中,增加长连接服用、超时等参数配置。 通过...

火山引擎DataLeap数据调度实例的 DAG 优化方案

具备严密的拓扑性质,有很强的流程表达能力。1. DAG 布局:指根据有向无环图中边的方向,自动计算节点层级和位置的布局算法。## 业务场景以其中一个场景为例:对于任务 test_3 在 2022-09-29 的实例进行分析可... 比如任务的优先级(代表任务的核心程度),以通知下游实例进行重跑等操作。结合上面存在的问题可得到,主要原因是由于在**复杂链路**情况下,上述需求比较难满足。而在旧版的 DAG 中,针对简单链路和复杂链路的处理是一...

推荐系统是如何做召回的?

# 一、什么是召回?相对于排序而言,召回不是一个太常见的词,有一些统计学知识背景的同学可能还会把它和混淆矩阵中的召回率(recall)搞混,其实他们并没有什么关系。推荐系统的召回环节,在文献中常见的翻译有两个,... 从这个关系里我们发现,无论是物品还是用户,都可以用一个固定维度的向量来表示,而要度量他们之间的“相似”或者“相关”关系,很自然的就会想到用向量之间的距离来定量描述,计算向量间距离常见的方式有Jaccard距离,欧...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

服务网格和 API 网关之间的差异

排序,选择性地将流量路由到不同版本的 service,以支持:- 金丝雀部署。- AB Test。- 服务版本控制、向后兼容。**可观察性**proxy 日志调用替代开发人员登录到每个客户端和服务器。通过这些日志,下游监控工具可以分析并回报性能和可用性,提供基本的跨调用链跟踪。通过额外的编程,开发人员可以增强调用链分析,包括业务交易跟踪。一些典型的可观察性功能如下:- 服务图和仪表板显示服务如何相互连接(无需更改代码...

基础使用

单击集群列表 > 服务列表 > ClickHouse > 部署拓扑页签,进入 ClickHouse 组件服务的部署拓扑。 单击组件名称下 (emr-core-1 主机名称)的 ECS ID,跳转进入到云服务器的实例界面,点击右上角的远程连接按钮。 选... 语句说明: 我们创建一个带有后缀名 _local 的表,这个表作为本地表,会真实存储 ClickHouse 的数据。 使用 on cluster 句式分布式执行该 DDL。 指定列信息,表引擎,分区字段,排序字段。 这里面表引擎的内容,需要详...

SoCC 论文解读:字节跳动如何在大规模集群中进行统一资源调度

在做调度决策时而不是 kubelet admit 时就识别到候选节点的资源微拓扑,并根据业务需求选择合适的节点进行调度。# **Gödel 介绍**[Gödel Scheduler](github.com/kubewharf/godel-scheduler) 是一个应用于 Kub... Binder 必须为 Pod Group 中的所有 Pod 处理冲突(如果存在的话)。要么所有 Pod 的冲突都得到解决,分别绑定每个 Pod;要么拒绝整个Pod Group 的调度。**CNR** 代表 Custom Node Resource,是字节跳动为补充节点实时...

SoCC 论文解读:字节跳动如何在大规模集群中进行统一资源调度

Binder 必须为 Pod Group 中的所有 Pod 处理冲突(如果存在的话)。要么所有 Pod 的冲突都得到解决,分别绑定每个 Pod;要么拒绝整个Pod Group 的调度。**CNR** 代表 Custom Node Resource,是字节跳动为补充节点实时信息创建的一个 CRD。它虽然本身不是 Gödel Scheduler 的一部分,但可以增强 Gödel 的调度语义。该 CRD 不仅定义了一个节点的资源量和状态,还定义了资源的微拓扑,比如 dual-socket 节点上每个 socket 上的 CPU/...

火山引擎云原生大数据在金融行业的实践

在实践中,通常存在独立的 K8s 集群和 Hadoop 集群。独立的 K8s 集群运行着在线服务,独立的 Hadoop 集群运行着大数据作业,这两个集群不仅不能彼此共享资源,而且资源利用率都非常低。离线计算和在线业务的资源需求... 集中调度、均衡调度等策略;也支持大数场景的高级策略,比如真实负载平均、GPU 共享、微拓扑调度等策略。**GRO Scheduler 具有极高的调度吞吐**,采用批式调度,在支持复杂调度策略的前提下,调度吞吐性能仍然可以达到...

Katalyst v0.4.0 发布:潮汐混部与资源超分

在潮汐混部中引入了潮汐节点池的概念,并且将集群中的节点划分为“在线”和“离线”两种类型。潮汐混部主要分为两个部分:* **实例数管理**:通过 HPA、CronHPA 等各种横向扩缩能力来管理在线业务的实例数,在夜... priorityValueInt 的取值越大表示优先级越高,并且取值范围受 pod 所指定的 QoS level 影响。 **支持拓扑感知调度** **背景**在搜索、广告、推荐、游戏、AI 分布式...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询