Controller and view model both have one-to-many relationship to the view
Comparison
ViewModel supports data binding, which allows for automatic synchronization of data between the ViewModel and the View. The ViewModel exposes properties that the View binds to, and any changes in the ViewModel automatically update the corresponding elements in the View.
Controller typically does not directly support data binding. It is responsible for explicitly updating the View when there are changes in the Model. The Controller retrieves data from the Model and explicitly render the View to reflect those changes.
ViewModel does not have direct knowledge of the specific View instances that bind to it. The ViewModel is designed to be independent of the View implementation and easier for testing
Controller has direct knowledge of the View and interacts with it to update its state. The Controller may have references to specific View instances and can manipulate the View directly to reflect changes in the Model.
The entry point of MVC is controller while MVVM is view