zoukankan      html  css  js  c++  java
  • 图03--[AOV网&&最小生成树&&Prim算法&&Kruskal算法]

    1.AVO网

    1.1基本概念

     1.2拓扑排序

     1.3拓扑排序思路

     1.4拓扑排序思路

    卡恩算法因为删掉原数据 所以需要对卡恩算法进行一定的优化

     

     1.5作业

    2.生成树

    2.1基本概念

     2.2最小生成树

     

     2.3切分定理

    2.4Prim算法--执行过程

     

     

    2.5prim算法实现

     

    private Set<EdgeInfo<V, E>> prim() {
            Iterator<Vertex<V, E>> it = vertices.values().iterator();
            if (!it.hasNext()) return null;
            Vertex<V, E> vertex = it.next();
            Set<EdgeInfo<V, E>> edgeInfos = new HashSet<>();
            Set<Vertex<V, E>> addedVertices = new HashSet<>();
            addedVertices.add(vertex);
            MinHeap<Edge<V, E>> heap = new MinHeap<>(vertex.outEdges, edgeComparator);
            int verticesSize = vertices.size();
            while (!heap.isEmpty() && addedVertices.size() < verticesSize) {
                Edge<V, E> edge = heap.remove();
                if (addedVertices.contains(edge.to)) continue;
                edgeInfos.add(edge.info());
                addedVertices.add(edge.to);
                heap.addAll(edge.to.outEdges);
            }
            return edgeInfos;
        }
    View Code

    2.6Kruskal算法--执行过程

     

     

     2.7Kruskal算法--实现

    private Set<EdgeInfo<V, E>> kruskal() {
            int edgeSize = vertices.size() - 1;
            if (edgeSize == -1) return null;
            Set<EdgeInfo<V, E>> edgeInfos = new HashSet<>();
            MinHeap<Edge<V, E>> heap = new MinHeap<>(edges, edgeComparator);
            UnionFind<Vertex<V, E>> uf = new UnionFind<>();
            vertices.forEach((V v, Vertex<V, E> vertex) -> {
                uf.makeSet(vertex);
            });
            while (!heap.isEmpty() && edgeInfos.size() < edgeSize) {
                Edge<V, E> edge = heap.remove(); 
                if (uf.isSame(edge.from, edge.to)) continue; 
                edgeInfos.add(edge.info());
                uf.union(edge.from, edge.to);
            }
            return edgeInfos;
        }
    View Code
  • 相关阅读:
    音乐播放器-任务
    android 四大组件Broadcast Receiver
    Android面试题
    android Notification 的使用
    【转】dip,px,pt,sp 的区别
    SQL Server快捷方式丢了怎么启动
    《ASP.NET1200例》C#在网页上编写动态时钟
    Win7旗舰版中的IIS配置asp.net的运行环境
    《转》Win7 IIS7.5 安装
    《ASP.NET 1200例》ref关键字与out关键字
  • 原文地址:https://www.cnblogs.com/ggnbnb/p/12610967.html
Copyright © 2011-2022 走看看