Unindo segmentos de linha não ordenados

Meu algoritmo produz uma lista de (geralmente) vários milhares de segmentos de linha (todos 2D) que eu preciso juntar em grandes polilinhas. Essas polilinhas resultantes podem estar fechadas ou abertas, mas nunca se auto-interceptam. Os segmentos de linha não são direcionados, isto é, pode ser necessário virar um segmento de linha antes que ele possa ser unido a seu vizinho.

O que seria uma maneira extremamente rápida de encontrar essas polilinhas? Eu tenho que fazer isso em tempo real, então qualquer coisa que demore mais que -dia-10ms não é uma solução.

Eu estou fazendo isso em c #, mas estou procurando idéias, não fonte.

questionAnswers(1)

yourAnswerToTheQuestion