Es un poco complicada la funcion , una funcion recursiva con criterios de backtraing te ayudaria a encontrar la ruta relativa entre dos directorios.
Ya que la forma que se me ocurre es recursiva, y backtring para que valla podando ramas del arbol que se genera. Lo que se me ocurre es ir realizar todos los .. posibles hasta llegar al patch inicial , luego comparar entre los dos directorios hasta que punto tienen patch similares, y desde hay comenzar una busquedad recursiva por los directorios hasta encontrar el directorio , tener un control de niveles para luego formar la ruta relativa.
Considero que es arto trabajo dicha funcion
, si tengo tiempo libre la intentare ( de cierto modo, es como el desafio del laberinto xD )
Saludos