アルゴリズムX Python実装

user1658921:

古い、メンテナンスされていないWebページでアルゴリズムXのPython実装を見つけました。それは美しく動作します。コードは非常に簡潔で、コメントはありません。把握していないものが一枚あります。私はそれが機能することを知っていますが、その方法や理由はわかりません。私よりもPythonプログラマーの進歩を期待しています。

以下のコードでは「select」が呼び出されていますが、戻り値に何が起こっているのですか。さらに、「select」はX内の値を変更していますか(つまり、X.pop(j))?「select」がXのコピーを渡されていませんか?

このコード:

X, Y = exact_cover(X, Y)
    for i, row in enumerate(grid):
        for j, n in enumerate(row):
            if n:
                select(X, Y, (i, j, n))
    for solution in solve(X, Y, []):
        for (r, c, n) in solution:
            grid[r][c] = n
        yield grid

この関数を呼び出します:

def select(X, Y, r):
    cols = []
    for j in Y[r]:
        for i in X[j]:
            for k in Y[i]:
                if k != j:
                    X[k].remove(i)
        cols.append(X.pop(j))
    return cols

出典:https : //www.cs.mcgill.ca/~aassaf9/python/algorithm_x.html

作者:Ali Assaf

リジュ:

変更可能なデータ型は、コピーではなく参照として渡されます。はい、X.pop()は元のXを変更します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

RでのアルゴリズムXの実装

分類Dev

PackBitsアルゴリズムの実装

分類Dev

CRCアルゴリズムの実装

分類Dev

RSAアルゴリズムの実装

分類Dev

Python frozensetハッシュアルゴリズム/実装

分類Dev

PythonでFPGrowthアルゴリズムを実装する方法は?

分類Dev

PythonでFFTアルゴリズムを実装するには?

分類Dev

PythonでのアルゴリズムMisra&Griesの実装

分類Dev

Haskellでのプリムのアルゴリズムの実装

分類Dev

Javaでのプリムのアルゴリズムの実装

分類Dev

近接交互線形化最小化アルゴリズムのpython実装

分類Dev

PythonでのBM-25検索アルゴリズムの実装

分類Dev

ブレゼンハムアルゴリズムの実装

分類Dev

TD-Gammonアルゴリズムの実装

分類Dev

エラーを示すJavaアルゴリズムの実装

分類Dev

Javaでのスター(A *)アルゴリズムの実装

分類Dev

Java-ハッシュアルゴリズム-最速の実装

分類Dev

AndroidでのBouncy Castle暗号アルゴリズムの実装

分類Dev

クロスオーバーアルゴリズムの実装

分類Dev

Strassenのアルゴリズムの実装

分類Dev

より高速なアルゴリズムを実装する

分類Dev

GTIN-13アルゴリズムの効率的な実装

分類Dev

実装:特別な分布問題のアルゴリズム

分類Dev

QRコード生成アルゴリズムの実装事例分析

分類Dev

C ++ STLを使用したDFSアルゴリズムの実装

分類Dev

AES_XCBCアルゴリズムの実装

分類Dev

Zバッファアルゴリズムの実装

分類Dev

CRC-10アルゴリズムの実装方法

分類Dev

OCLでLuhnアルゴリズムを実装する方法

Related 関連記事

ホットタグ

アーカイブ