function minTrig!(g::AbstractGraph)
    mg = construct_metagraph(g)
    origin_edges = edges(g)
    for i in 1:nv(g)
        mv = min_triangles(mg)
        sedges = getsaturate(mg, mv)
        add_edges!(mg, sedges)
        sedges::Vector{Vector{Int}} = [edge_m2s(mg, e[1], e[2]) for e in sedges]
        add_edges!(g, sedges)
        rem_vertex!(mg, mv)
    end
    data = Dict("added_edges" => setdiff(edges(g), origin_edges))
    return data
end


function minTrig(g::AbstractGraph)
    cg = deepcopy(g)
    data = minTrig!(cg)
    return cg, data
end


function maxTrig!(g::AbstractGraph)
    mg = construct_metagraph(g)
    origin_edges = edges(g)
    for i in 1:nv(g)
        mv = max_triangles(mg)
        sedges = getsaturate(mg, mv)
        add_edges!(mg, sedges)
        sedges::Vector{Vector{Int}} = [edge_m2s(mg, e[1], e[2]) for e in sedges]
        add_edges!(g, sedges)
        rem_vertex!(mg, mv)
    end
    data = Dict("added_edges" => setdiff(edges(g), origin_edges))
    return data
end


function maxTrig(g::AbstractGraph)
    cg = deepcopy(g)
    data = maxTrig!(cg)
    return cg, data
end
