算法代码实现之Union-Find,Golang(Go语言)实现,quick-find、quick-union、加权quick-union(附带路径压缩优化)

算法代码实现之Union-Find,Golang(Go语言)实现,quick-find、quick-union、加权quick-union(附带路径压缩优化),第1张

概述本算法主要解决动态连通性一类问题,这里尽量用精炼简洁的话来阐述。 数据结构描述: 有N个节点(索引0~N-1),可以查询节点数量 可以连接两个节点 可以查询两个节点是否连通 算法大致设计思路: 每个节点初始化为不同的整数标记 通过一个辅助函数查询某个节点的标记值 如果两节点标记相同,说明两节点是连通的 用一个包专门处理union-find算法(unionfind) 定义接口和基类(union_fi

本算法主要解决动态连通性一类问题,这里尽量用精炼简洁的话来阐述。


数据结构描述:

有N个节点(索引0~N-1),可以查询节点数量 可以连接两个节点 可以查询两个节点是否连通 算法大致设计思路: 每个节点初始化为不同的整数标记 通过一个辅助函数查询某个节点的标记值 如果两节点标记相同,说明两节点是连通的 用一个包专门处理union-find算法(unionfind) 定义接口和基类(union_find.go):
                                                                                                                                                                                                           package unionfind//union-find的quick-find实现版type QuickFind struct { BaseUnionFind}func (qf *QuickFind) Connectedp, q intboolreturn qf.ID[]==q] Union i j :=],123)">if i for k v  range qfID k= icount--func NewQuickFindn *QuickFind&QuickFind{*NewBaseUnionFindn)}}

QuickFind: a和b进行union的时候,将b及与b连通节点的标记都置为和a的标记一样 标记相同的节点是连通的 quick_find.go:
                                                                                                                                                                                    i j j c } 
QuickUnion: 连通的节点形成一棵树,根节点相同 quick_union.go: //union-find的quick-union实现版type QuickUnion}//查询根节点qu *QuickUnion findRootp int p != qu pfindRoot) rp rq rq rpfunc NewQuickUnion*QuickUnion&QuickUnion} 加权QuickUnion(附带路径压缩优化): union的时候小树挂在大树下 查询根节点的时候顺便将该节点的父节点直接指向根节点,压缩路径 weighted_quick_union.go: //union-find的加权quick-union实现版,//另外还作了路径压缩优化type WeightedQuickUnion QuickUnion sz []//查询根节点,顺便压缩路径wqu *WeightedQuickUnion wquwqu]]szrp< rq+=elsefunc NewWeightedQuickUnion*WeightedQuickUnion make([] n 0;++ sz1&WeightedQuickUnion{QuickUnion:*NewQuickUnion),161)">:} 总结

以上是内存溢出为你收集整理的算法代码实现之Union-Find,Golang(Go语言)实现,quick-find、quick-union、加权quick-union(附带路径压缩优化)全部内容,希望文章能够帮你解决算法代码实现之Union-Find,Golang(Go语言)实现,quick-find、quick-union、加权quick-union(附带路径压缩优化)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1285109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存