仕様1:2次元
仕様2:線分と線分の交差は、気にしません。
目的:輪(環)がいくつあるか知りたい。

例1
input  : 線分1 [ 0, 0], [10, 0]
         線分2 [10, 0], [ 0,10]
         線分3 [ 0,10], [ 0, 0]
         線分4 [-5, 0], [-5,10]
output : 閉図形の数=1
       :  [0,0],[10,0],[ 0,10]

例2(8の字の形:1つとします)
input  : 線分1 [ 0, 0], [10,10]
         線分2 [10,10], [10, 0]
         線分3 [10, 0], [ 0,10]
         線分4 [ 0,10], [ 0, 0]
         線分5 [-5, 0], [-5,10]
output : 閉図形の数=1
       :  [0,0],[10,10],[10,0],[0,10]

例3(▽△)
input  : 線分1 [ 0, 0], [ 5, 5]
         線分2 [ 5, 5], [ 0,10]
         線分3 [10, 0], [ 0, 0]
         線分4 [ 5, 5], [10, 0]
         線分5 [10, 0], [10,10]
         線分6 [10,10], [ 5, 5]
output : 閉図形の数=2
       :  [0,0],[ 5, 5],[ 0,10]
       :  [5,5],[10, 0],[10,10]

例4(閉図形と閉図形の重なりはOKです)

①タイトルで意味が通じますか?正式名称があれば教えて下さい。検索語が思いつきませんでした。
②特に言語にこだわりません。おすすめのページがあれば教えて下さい。
よろしくお願いします。

2018-10-19A----------------------------------------------------------------
〉例3では[ 0, 0]-[10, 0]-[10,10]-[ 5, 5]なんて閉路もあるようなんですが、
申し訳ありません。
例3の線分3 [10, 0], [ 0, 0]は、[ 0,10], [ 0, 0]でした。正しいものを、
例5としました。

例5(▽△)
input  : 線分1 ( 0, 0),( 5, 5),
         線分2 ( 5, 5),( 0,10),
         線分3 ( 0,10),( 0, 0),
         線分4 ( 5, 5),(10, 0),
         線分5 (10, 0),(10,10),
         線分6 (10,10),( 5, 5)
output : 閉図形の数=2
       : (0,0),( 5, 5),( 0,10)
       : (5,5),(10, 0),(10,10)

例3は、想定していませんでした。

〉検索語が思いつきませんでした。
hamiltonian-pathで検索

2018-10-19B----------------------------------------------------------------
〉PythonでNetworkXを使って
2次元のままのデータで、できました。
例3は、イメージとして、=2ですね。
例5は、残念ながら閉図形の数=1でした。
edges = [((0, 0), (5, 5)), ((5, 5), (0,10)),((10, 0), (0, 0)),((5, 5), (10, 0)), ((10, 0), (10,10)),((10,10), (5, 5))]

〉内側かはかは、わからないので
(5,5)から(10,0)へのルート3通ありました。

〉閉路の検出と同じ
座標をナンバリングしたら、別世界ですか?
例3について、NetworkXは,1次元でできるかチャレンジしてみます。
00→1,100→2,1010→3,55→4,010→5
(00,55)(55,010),(100,00)(55,100)(100,1010)(1010,55)
(1,4) (4,5) (2,1) (4,2) (2,3) (3,4) :1次元