Reverse / transponer un mapa de uno a muchos en Scala

Cuál es la mejor manera de convertir unMap[A, Set[B]] en unaMap[B, Set[A]]?

Por ejemplo, ¿cómo puedo convertir un

Map(1 -> Set("a", "b"),
    2 -> Set("b", "c"),
    3 -> Set("c", "d"))

en u

Map("a" -> Set(1),
    "b" -> Set(1, 2),
    "c" -> Set(2, 3),
    "d" -> Set(3))

(Estoy usando colecciones inmutables solo aquí. Y mi verdadero problema no tiene nada que ver con cadenas o enteros.)

Respuestas a la pregunta(6)

Su respuesta a la pregunta