Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Can't I check whether every instruction in every BasicBlock of the CFG is equal?


Sure, but how do you determine which basic blocks correspond to each other, when there have been changes to parts of the graph?


Damn. Is this an unsolved problem in CS?


Graph isomorphism is a known NP-hard problem, but the vast majority of subgraphs in programs are reducible, so I expect that aligning two control flow graphs admits a good heuristic solution.


Actually, the complexity of Graph Isomorphism in general is still unknown, and any definite classification would have interesting consequences. https://en.wikipedia.org/wiki/Graph_isomorphism_problem

I agree though that control flow graphs are probably easier to align than completely random graphs, although there might be pathological cases e.g. if you have lots of identical subgraphs like if err != nil { return nil, err }.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: