Salut,
Si j'ai bien compris tu veux tester si il est possible d'aller d'un point A à un point B sur une map rectangulaire où certaines cases sont interdites d'accès?
Le probème est ta variable alreadySee, tu pourrai la remplacer par une map parallèle où chaque case est un booleen qui permet de savoir si tu est déja passé, ton algo aurai alors une complexité O(n) au lieu de O(n²).
Ensuite si c'est toujours trop lent et que le fait qu'une case change d'accessibilité n'est pas trop fréquent tu peux cacher les résultats en associant à chaque case de la map un id partagées par toutes ses cases connexes, tu mets à jour ces ids lorsqu'un chemin se ferme sur la map. Il faut alors juste tester si map[position].id == map[startPosition].id.
Utiliser un seul vector(en l'encapsulant dans une classe Matrix par exemple) pourrait être légèrement plus efficace qu'un vector de vector.
Enfin tu pourrai éviter les tests du genre (position.y-1 > -1) en entourant la map d'un bordure de cases innacessibles.