位运算最小生成树.PDFVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
位运算最小生成树.PDF

位运算最小生成树 目录 Ⅰ. 问题定义 1 Ⅱ. 基本解法 1 Ⅲ. 通解通法 2 一. 基本思路 2 二. 对于 XOR 2 三. 对于 AND 2 四. 时间复杂度分析 3 五. 代码参考 3 Ⅳ. XOR 的特殊解法 3 Ⅴ. AND 的特殊解法 4 一. 基本思路 4 二. 优化思路 4 三. 代码参考 4 Ⅵ. 参考文献 4 Ⅰ. 问题定义 m 1 有 n 个点,第 i 个点有点权 a ,0≤a <2 。边 E(i,j) 的边权为 i i f(a ,a)。f(a,b)表示一个位运算,一般为 AND 或者 XOR。求这张图 i j 2 的最大/最小生成树。 Ⅱ. 基本解法 除边权跟位运算有关,这类题目说到底还是 MST 问题,座椅 可以暴力建出这些边,然后跑 Prim 或者 Kruskal。但因为边数可 1 任意两点之间都存在边,所以这是一张完全图 2 注意!边权与边权之间是相加,不再是位运算 2 能会达到 O(n )的级别,所以该种解法局限性非常大 Ⅲ. 通解通法 一. 基本思路 3 因为是 MST 问题,所以可以考虑 Borůvka 算法 。所以现 在的问题转换为:给每一个值分配一个颜色,给定一个值 a , x 如何在{a }中找到一个异色的 a 使 f(a ,a )最大。 i y x y 二. 对于 XOR 因为对于位运算,二进制下每一位相对独立,所以考虑 Trie。 对于每一轮连边,我们新建一棵 Trie,将每一个数转化成二 进制,然后插入到 Trie 中。同时在 Trie 中,记录每一个点的 子树中颜色的最大值和最小值。 然后对于每一个点,直接在 Trie 中查询即可 三. 对于 AND 基本思路与 XOR 相同,但是如果我们正在查询 ai,其第 j 位为 0,这样的话,0/1 这两棵子树我们都需要进入。这样的 话,时间复杂度就没有保障了。 所以我们在建好 Trie 树后,还需要把所有 1 的子树给合并 3 不了解 Borůvka 的话,可以去看看 wikipedia 或者在我的 blog 上搜一搜 到 0 的子树中去。 这样的话,无论情况如何,我们都只用进入一棵子树了 四. 时间复杂度分析 运行 Borůvka 算法时需要 log(n)波连边 每一次连边需要建一棵 Trie 树,每一次建树复杂度为 O(n*m) 之后需要使用并查集来连每一条边,复杂度为 O(α(n)*

文档评论(0)

18273502 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档