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

拓扑排序的邻接矩阵实现

拓扑排序是一种常用的有向无环图(DAG)的排序算法,它可以用来解决一些依赖关系的问题。邻接矩阵是一种常见的图表示方法,可以用二维数组来表示图中节点之间的连通关系。下面是一个使用邻接矩阵实现拓扑排序的示例代码:

from collections import deque

def topological_sort(adj_matrix):
    n = len(adj_matrix)
    indegree = [0] * n
    result = []
    
    # 计算每个节点的入度
    for i in range(n):
        for j in range(n):
            indegree[j] += adj_matrix[i][j]
    
    # 将入度为0的节点加入队列
    queue = deque()
    for i in range(n):
        if indegree[i] == 0:
            queue.append(i)
    
    # 拓扑排序
    while queue:
        node = queue.popleft()
        result.append(node)
        
        # 更新每个节点的入度
        for i in range(n):
            if adj_matrix[node][i] == 1:
                indegree[i] -= 1
                if indegree[i] == 0:
                    queue.append(i)
    
    # 检查是否有环
    if len(result) != n:
        print("图中存在环")
    
    return result

使用示例:

adj_matrix = [
    [0, 0, 1, 1, 0],
    [0, 0, 0, 1, 1],
    [0, 0, 0, 0, 1],
    [0, 0, 0, 0, 1],
    [0, 0, 0, 0, 0]
]

result = topological_sort(adj_matrix)
print(result)

输出结果:

[0, 1, 2, 3, 4]

这段代码首先通过邻接矩阵计算每个节点的入度,然后将入度为0的节点加入队列中,并不断更新每个节点的入度,直到队列为空。最后检查排序结果的长度是否等于节点个数,如果不等说明图中存在环。

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

社区干货

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

排序后的链表,还是只能知道头尾节点,知道中间的范围,但是要找到中间的节点,还是得走遍历的老路。如果我们把中间节点存储起来呢?存起来,确实我们就知道数据在前一半,还是在后一半。比如找`7`,肯定就从中间节点开始找... 是用于有序元素序列快速搜索查找的一个数据结构,跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。跳表不仅能提高搜索性能,...

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

因此我们可能需要实现第三层:“**因果可观测性**”。它要求我们能够回答:* 问题在整个堆栈中是如何传播的?* 问题根因究竟在哪?* 问题开始的时候堆栈是什么样子的?* 问题发生,哪些组件会受到影响?* 海量的观测数据及告警应该如何关联?这些问题,也正是真正困扰技术团队的问题。根据可观测性模型理论,要能够回答这些问题,核心要实现的 2 个必要维度便是:**拓扑**和 **时间**。拓扑可视化让工程师得以在全栈活动...

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

难以实现;* 传统的大数据引擎,比如 Flink、Spark,最初不是针对云原生系统设计,其 AM-Task 作业形态难以直接在云原生系统上部署;* 云原生系统的原生调度器不具备与 Hadoop YARN 队列类似的多租户资源管控能力... 所有作业按照定义的优先级排序,调度器优先分配高优先级的作业;* **Gang 调度**:调度器一次性为作业的所有 Pod 分配资源,或者一个 Pod 也不分配,保证不出现一个作业的部分 Pod 启动,部分 Pod 排队等待的情况;一...

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

# 一、什么是召回?相对于排序而言,召回不是一个太常见的词,有一些统计学知识背景的同学可能还会把它和混淆矩阵中的召回率(recall)搞混,其实他们并没有什么关系。推荐系统的召回环节,在文献中常见的翻译有两个,... 那如何实现这个想法呢?当我们画出一个记录表,纵向罗列出n个用户,横向罗列出m个商品,在纵横交错的地方记录下用户与商品的互动记录(0,1,2,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/年
立即购买

拓扑排序的邻接矩阵实现-优选内容

万字长文带你漫游数据结构世界|社区征文
排序后的链表,还是只能知道头尾节点,知道中间的范围,但是要找到中间的节点,还是得走遍历的老路。如果我们把中间节点存储起来呢?存起来,确实我们就知道数据在前一半,还是在后一半。比如找`7`,肯定就从中间节点开始找... 是用于有序元素序列快速搜索查找的一个数据结构,跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。跳表不仅能提高搜索性能,...
Kubernetes 观测:基于 eBPF 的云原生深度可观测性实践
因此我们可能需要实现第三层:“**因果可观测性**”。它要求我们能够回答:* 问题在整个堆栈中是如何传播的?* 问题根因究竟在哪?* 问题开始的时候堆栈是什么样子的?* 问题发生,哪些组件会受到影响?* 海量的观测数据及告警应该如何关联?这些问题,也正是真正困扰技术团队的问题。根据可观测性模型理论,要能够回答这些问题,核心要实现的 2 个必要维度便是:**拓扑**和 **时间**。拓扑可视化让工程师得以在全栈活动...
火山引擎云原生大数据在金融行业的实践
难以实现;* 传统的大数据引擎,比如 Flink、Spark,最初不是针对云原生系统设计,其 AM-Task 作业形态难以直接在云原生系统上部署;* 云原生系统的原生调度器不具备与 Hadoop YARN 队列类似的多租户资源管控能力... 所有作业按照定义的优先级排序,调度器优先分配高优先级的作业;* **Gang 调度**:调度器一次性为作业的所有 Pod 分配资源,或者一个 Pod 也不分配,保证不出现一个作业的部分 Pod 启动,部分 Pod 排队等待的情况;一...
推荐系统是如何做召回的?
# 一、什么是召回?相对于排序而言,召回不是一个太常见的词,有一些统计学知识背景的同学可能还会把它和混淆矩阵中的召回率(recall)搞混,其实他们并没有什么关系。推荐系统的召回环节,在文献中常见的翻译有两个,... 那如何实现这个想法呢?当我们画出一个记录表,纵向罗列出n个用户,横向罗列出m个商品,在纵横交错的地方记录下用户与商品的互动记录(0,1,2,3…),得到一个的表格,这便是矩阵,我们把它称为邻接矩阵,基于这个矩阵所构建出...

拓扑排序的邻接矩阵实现-相关内容

新功能发布记录

筛选和排序功能。 - 2024 年 1 月发布时间 功能模块 说明 相关文档 2024-01-31 全部 Open API 发布,包括网站接入、防护策略配置、IP 地址组管理和证书管理。 API 列表 2024-01-31 网站接入 支持负载均... 2023-11-30 安全概览 概览拓扑图展示接入方式和回源信息,回源信息显示公网 IP 地址,或是 VPC 与内网 IP 地址。 安全概览 2023-11-30 网站接入 CNAME 接入方式中,增加长连接服用、超时等参数配置。 通过...

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

最后融合多个目标的预估分来完成排序。 **对推荐系统来说,最核心的工作,便是构建精准的预估模型** 。这些年,业界的推荐模型一直朝着大规模、实时化、精细化的趋势不断演进。大规模是指数据量和模型非常大,训练样本... 从而实现大规模训练。但由于 table size 固定,有 hash 冲突风险。* **PyTorch**:Facebook 开源的机器学习系统,使用 Ring All Reduce 同步参数,要求单机能容纳所有参数,难以训练超大模型。* **XDL**:国内开源的...

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

## **基于云原生的** **YARN** **解决方案 ——** **Serverless YARN**Serverless YARN 是基于云原生的 YARN 解决方案,帮助大数据作业透明迁移到云原生系统。简单来说,在 K8s 系统上模拟实现了 YARN 系统,传统作... 微拓扑调度等策略。**GRO Scheduler 具有极高的调度吞吐**,采用批式调度,在支持复杂调度策略的前提下,调度吞吐性能仍然可以达到每秒上千个 Pod。**GRO Scheduler 具有丰富的信息统计**,支持队列的资源统计,作业...

热门爆款云服务器

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 网关之间的差异

**服务网格通常由两层实现:数据平面(data plane)和控制平面(control plane)。** 数据平面充当连接客户端和服务器端点的代理,执行从控制平面接收的策略,并且是将运行时指标反馈回控制平面的监控工具。控制平面则是管... ** 它还能对来自客户端应用程序的流量进行优先级排序,选择性地将流量路由到不同版本的 service,以支持:- 金丝雀部署。- AB Test。- 服务版本控制、向后兼容。**可观察性**proxy 日志调用替代开发人员...

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

具备严密的拓扑性质,有很强的流程表达能力。1. DAG 布局:指根据有向无环图中边的方向,自动计算节点层级和位置的布局算法。## 业务场景以其中一个场景为例:对于任务 test_3 在 2022-09-29 的实例进行分析可... 我们可以进行如下的功能实现与设计:## 渲染方案替换将 svg 的渲染方案替换成 canvas 渲染,通过减少页面中 DOM 的数量,提高前端渲染性能。## 不同场景的功能设计通过上面的需求分析,我们设计了不同的功能模...

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

这些能力是字节跳动在不同业务场景中实现降本增效的技术手段,我们在抽象出标准化能力之后也进行了开源,期望这些能力可以帮助用户以更低的落地成本完成资源效能提升。 **潮汐混部**... **支持拓扑感知调度** **背景**在搜索、广告、推荐、游戏、AI 分布式训练等业务场景下,用户对时延的敏感性较高,对容器在微拓扑级别的摆放方式存在要求。原生 K8s 的微拓扑管...

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

这些能力是字节跳动在不同业务场景中实现降本增效的技术手段,我们在抽象出标准化能力之后也进行了开源,期望这些能力可以帮助用户以更低的落地成本完成资源效能提升。**0****1** **潮汐混... **支持拓扑感知调度**在搜索、广告、推荐、游戏、AI 分布式训练等业务场景下,用户对时延的敏感性较高,对容器在微拓扑级别的摆放方式存在要求。原生 K8s 的微拓扑管理能力存在一些局限,调度器不感...

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

实现资源并池,从而在提升资源利用率和资源弹性的同时,优化业务成本和体验,降低运维压力。Gödel 调度器基于 Kubernetes 平台,可以无缝替换 Kubernetes 的原生调度器,在性能和功能上优于 Kubernetes 原生调度器和社... 在做调度决策时而不是 kubelet admit 时就识别到候选节点的资源微拓扑,并根据业务需求选择合适的节点进行调度。**03** **Gödel 介绍** Gödel Scheduler 是一个...

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

实现资源并池,从而在提升资源利用率和资源弹性的同时,优化业务成本和体验,降低运维压力。[Gödel 调度器](github.com/kubewharf/godel-scheduler)基于 Kubernetes 平台,可以无缝替换 Kubernetes 的原生调度器,在性... 在做调度决策时而不是 kubelet admit 时就识别到候选节点的资源微拓扑,并根据业务需求选择合适的节点进行调度。# **Gödel 介绍**[Gödel Scheduler](github.com/kubewharf/godel-scheduler) 是一个应用于 Kub...

特惠活动

热门爆款云服务器

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

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

一键开启云上增长新空间

立即咨询