Ещё раз внимательно перечитал условие. Похоже, тут просто требуется найти все грани плоской укладки графа, причём она уже дана: граф представлен набором отрезков. Думаю, тут всё же подойдёт алгоритм, использующий расположение этих точек на плоскости. В моём представлении он может выглядеть так:
Пусть на плоскости задана прямоугольная декартова система координат с координатными векторами

. Также задано рассматриваемое множество отрезков.
1. Среди концов рассматриваемых отрезков возьмём точку

, заведомо принадлежащую внешней грани, а именно какую-нибудь точку с наименьшей координатой

.
2. Среди всех точек, соединённых отрезками с точкой

, выберем точку

, такую, что угол между

и

, отсчитываемый по часовой стрелке, минимален.
3. Находясь в точке

, выбираем следующую точку,

, среди всех точек, соединённых отрезками с

, кроме

, такую, что угол между

и

, отсчитываемый по часовой стрелке, максимален.
Повторять этот шаг до возвращения в точку

.
4. Найденная последовательность точек представляет собой очередную грань. Отрезок

не принадлежит никакой другой грани. Исключим его из дальнейшего рассмотрения.
4а. Если имеется "висячая" точка, являющаяся концом только одного отрезка, исключим эту точку и этот отрезок из дальнейшего рассмотрения. Будем повторять этот шаг, пока таких точек не останется.
5. Если у нас ещё остались отрезки, перейдём к шагу 1.
Взаимную ориентацию векторов можно определить с помощью векторного произведения.
