Do you need to analyze multiple variations of essentially the same program?
Do you need to understand the changes between two versions of a program?
Are you trying to detect code theft?

zynamics BinDiff uses a unique graph-theoretical aproach to allow comparison of executables by identifying identical und similar functions.

http://www.zynamics.com/bindiff.html