Bestimmen Sie, ob eine Zeilenpermutation einer Matrix Toeplitz ist

A Töplitz Matrix "ist eine Matrix, in der jede von links nach rechts absteigende Diagonale konstant ist." Gibt es bei einer gegebenen binären Matrix M einen effizienten Algorithmus, um zu bestimmen, ob es eine Permutation der Zeilen gibt, die es zu Toeplitz macht?

Zum Beispiel setzen

M= [0 1 1]
   [1 1 0]
   [1 0 1]

Wenn Sie die erste und zweite Reihe tauschen, erhalten Sie

[1 1 0]
[0 1 1]
[1 0 1]

Das ist Töplitz.

In Python können Sie eine zufällige binäre Matrix wie folgt erstellen.

n = 10
h = 10
M =  np.random.randint(2, size=(h,n))

Ich möchte den Test auf M anwenden.

(Beachten Sie, dass die Matrix M nicht quadratisch sein muss.)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage