V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Zzhiter
V2EX  ›  问与答

如何计算程序执行路径的相似度

  •  
  •   Zzhiter · 214 天前 · 554 次点击
    这是一个创建于 214 天前的主题,其中的信息可能已经有所发展或是发生改变。
    接上一个问题:关于 Java 的如何进行单体应用 tracing 的问题 https://www.v2ex.com/t/1028385
    现在可以获取程序执行时候走过的函数序列信息,但是如何快速比较两条执行路径之间的相似性?

    假设现在我有了一个程序中定义的目标点 T ,可以执行到 T 的函数序列的集合是 S ,当前执行的序列是 P
    我理解需要完成以下:

    1. 首先需要找一个合适的数据结构,存储这个执行路径信息。
    比如说记录走过了 funcA -> funcB -> funcC ,可以使用线性数据结构,也可以使用树或者图,但是考虑到快速判断两个序列的相似性,最好是给每个 func 一个编码,最终执行完之后得到一个编码序列,直接比较 P 的编码序列和 S 集合中所有序列的相似性。

    2. 定义什么样的指标,证明路径 P1 比路径 P 更优,这个指标通过 P/P1 和 S 做运算计算出来的。
    如果两条路径 P 和 P1 都可以走到目标点 T ,那么他们的分数都是最优的,也就是距离目标点 T 的距离为 0 。
    如果都走不到,这两者也是应该有一个分数的,基于这个分数可以判断出 P 和 P1 谁更优。如果可以走到 T ,那还好;但是如果走不到 T ,P 和 P1 是需要和集合 S 中的所有路径都计算一遍,得到自己的分数的,这个时间复杂度可能有点高,所以这个指标和计算方式其实是依赖于上面定义的数据结构的。

    如果大佬们有思路,可以评论,咱们多多交流🫡🫡🫡
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2618 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 10:49 · PVG 18:49 · LAX 02:49 · JFK 05:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.