zoukankan      html  css  js  c++  java
  • Git diff 算法

    Myers算法我觉得这个文章讲的非常好:

    https://www.dazhuanlan.com/2019/12/05/5de8b95bf1dba/?__cf_chl_captcha_tk__=543b5104e7fd004468911afb048ec39aa0825007-1602557816-0-AW3rYqpZ0emcbioiQkuXhPmDNLL664JohKrR6_NXEyU2IKEgbxnO4LLWbSksogDlpyYU6MvtrWuKzKAZZkjUVpK49_0Ngeb6k6e_yyoyX5Ga8edOjvvbMO2-5geYPYu3rYCSktaDOZMeqRzih89lENvLSF14lV1PEizy0XLRBkIjL7w2_II0wnmIOZe0mfNV4nDMn4PP1IGUkP5WfNK9JmFcaPKZA8RGQYoubsUN52tBShJGgMbkcc1u1SF8nJXpsulDbjHzbr1SECdmMOBV6qImrI5JVlQlUfRz4xpNkUEwUAHGmSuClZeHmRrBSRxtJrOE0SNoWgxM5sj8uQPOdA52UukFoFVQ_g2kTRLMoFBM1HDgkbWhcR00jFf4j1A2uQ

    大体思路就是一个贪心的BFS,向右或者向下算新的一层,走对角线不算新的一层。但是这种方法,在最坏的情况下,时空复杂度好像还是n^2

    下面的链接讲了Patience和Histogram的区别

    https://stackoverflow.com/questions/32365271/whats-the-difference-between-git-diff-patience-and-git-diff-histogram

    下面的链接讲了Histogram的实现:

    https://link.springer.com/article/10.1007/s10664-019-09772-z

    大概意思就是先找到出现次数最少但是在修改前后都出现的行,对这些行做LCS(这时候是一个子任务集,规模比较小)。然后递归的对被这些行分割的区域做一样的操作。

    另外,按行做diff算法,现在看起来,就是求一个LCS,在用Myers的时候,不明白大家为什么不直接用nlogn的LCS来做。。。

    https://blog.csdn.net/accelerator_/article/details/11339459

  • 相关阅读:
    获取资源文件 r.drawable中的图片转换为drawable、bitmap
    Android 启动白屏或者黑屏闪现解决
    Android应用截图方法
    史上最全的变量、作用域和内存问题
    RunLoop总结:RunLoop的应用场景(四)
    poj3436 ACM Computer Factory, 最大流,输出路径
    android开发——从相冊中选择图片不裁剪
    <html>
    poj3073
    poj 2482 Stars in Your Window (线段树扫描线)
  • 原文地址:https://www.cnblogs.com/xuwangzihao/p/13808266.html
Copyright © 2011-2022 走看看