图——拓扑排序

拓扑排序 Topological-Sort(G)

1.选择入度为0的结点作为起始结点,输出该结点

2.将相连结点的入度减1

3.继续执行1,2直到遍历完成

Topological-Sort(G)
Input: A graph G
Output: None
步骤1:构建一个空队列Q
Initialize Q to be an empty queue;
步骤2:遍历图中所有结点,将入度为0的结点加入队列Q
for 𝑢 ∈ 𝑉 do
    if 𝑢. 𝑖𝑛_𝑑𝑒𝑔𝑟𝑒𝑒 𝑖𝑠 𝑒𝑞𝑢𝑎𝑙 𝑡𝑜 0 then
        Enqueue(𝑄, 𝑢); //Find all starting vertices
    end
end
步骤3:遍历Q中结点,直到队列Q中为空
while 𝑄 𝑖𝑠 𝑛𝑜𝑡 𝑒𝑚𝑝𝑡𝑦 do
    步骤3.1:输出队列结点u
    𝑢 ←Dequeue(𝑄);
    Output 𝑢;
    步骤3.2:遍历结点u的所有子结点,入度减一,如果出现入度为0的结点,加入队列Q
    for 𝑣 ∈ 𝐴𝑑𝑗(𝑢) do
    //remove u’s outgoing edges
        𝑣. 𝑖𝑛_𝑑𝑒𝑔𝑟𝑒𝑒 ← 𝑣. 𝑖𝑛_𝑑𝑒𝑔𝑟𝑒𝑒 −1;
        if 𝑣. 𝑖𝑛_𝑑𝑒𝑔𝑟𝑒𝑒 𝑖𝑠 𝑒𝑞𝑢𝑎𝑙 𝑡𝑜 0 then
            Enqueue(𝑄, 𝑢);
        end
    end
end

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值