それらのより効率的なアルゴリズムのライブラリを知っていますか？
Pythonパッケージ「NetworkX」には、Christofidesアルゴリズムの実装が含まれています。次のコマンドで「NetworkX」をインストールできます。
``コンソール
PIPインストールNetworkX
`` `

Christofidesアルゴリズムを使用して上記のコードを書き換える方法は次のとおりです。

`` `py
NetworkXインポートグラフから
NetworkX.Algorithms.AppRomation.Traveling_Salesman Import CristoFidesから

def tsp（ポイント）：
    ＃すべてのポイント間の距離を計算します
    DEF距離（P1、P2）：
        x1、y1 = p1
        x2、y2 = p2
        return（（x1 -x2）** 2 +（y1 -y2）** 2）** 0.5

    ＃距離グラフを作成します
    distance_graph = graph（）
    範囲のIの場合（LEN（ポイント））：
        range（len（points））のjの場合：
            distance_graph.add_edge（i、j、weight = distance（points [i]、points [j]））

    ＃TSPパスを見つけます
    Path = Christofides（distance_graph）

    ＃パスの長さを計算します
    長さ= 0
    範囲のIの場合（LEN（ポイント））：
        長さ += distance_graph.get_edge_data（path [i]、path [i +1]）["weight"]
    戻る長さ、パス

ポイント= [（0、0）、（1、2）、（3、4）、（5、6）]
長さ、パス= TSP（ポイント）
print（ "最短パスは：" + str（path））
印刷（ "距離：" + str（length））
`` `

このアルゴリズムは最適なソリューションを提供するように保証されていないため、注意してください。Christofidesアルゴリズムは、$ o（n^3）$ time（$ o（n！）$ではなく）で実行され、3/2近似のみを保証する速度の精度を犠牲にします。