From what I can gather, the first two don\'t seem that different. Whether it\'s called a controller or presenter, it still seems to have the same mediation functions.
<The difference is in way how data from model layer ends up in the view instances.
The difference between MVP and MVVM is in the development process. You would use MVP pattern, when creating presentation layer for a known model layer.
But you will have to use MVVM, if you have a preexisting (or for some reason - un changeable) user interface and preexisting (or unchangeable) model layer. And you have to make them work together. That's where viewmodel comes into play.