Luego podriamos decir que personas e instituciones estan al mismo nivel con respecto a actividades.
 
Actividades 1 ----- n > RelActCol 
< n ---- 1 Colaboradores 
Colaboradores seria una unión de Personas e Instituciones lo que se podria solucionar con una vista 
pero no nos permitiría referenciarla. 
Luego  
RelActCol
idActividad
idCol  <--- Seria el id de una persona o de una institución, no se puede crear una FK
idTipo 
---- PK (idActividad,idCol,idTipo)  
 y mantener la integridad a nivel de código.     
(1=persona)    
(2=institucion) 
La alternativa es crear una tabla física con la unión de personas e instituciones que si se podria referenciar. 
Pero ahora tendrás que mantener la integridad por codigo entre las tablas persona e instituciones y la hipotetica tabla Colaboradores.
 
O dos relaciones n:m  Actividades con Personas y Actividades con Instituciones....