[PYTHON] Finden Sie den Rang der Matrix in der XOR-Welt (Rang der Matrix auf F2)

Zunaechst

Ich bin ein Universitätsstudent der Landwirtschaftlichen Fakultät, der Mathematik als Hobby studiert. Ich habe immer noch viele Mathematik- und Programmierkenntnisse, daher würde ich mich freuen, wenn Sie mir> <beibringen könnten

Was ist XOR?

Bitte überprüfen Sie eine andere Website für Details. Wenn du sprichst 1+1=0 1+0=1 0+1=1 0+0=0 Wenn Sie es als eine Welt betrachten, in der Operationen definiert sind (algebraisch gesehen ist es die Summe auf $ \ mathbb {F_2} $.)

Was ist Vereinfachung?

Es ist eine Arbeit, sich in eine bequeme Form zu verwandeln und dabei den Rang der Matrix beizubehalten. Es ist oft schön, den Rang zu kennen (Verschiedenes) Wenn es im Prozess der Vereinfachung existiert, kann die inverse Matrix erhalten werden, so dass die Vereinfachung ziemlich wichtig ist.

Programm

Bestimmen Sie zunächst die Berechnung

def cal(a,b):
    if a==1 and b==1:
        return 0
    elif a==1 and b==0:
        return 1
    elif a==0 and b==1:
        return 1
    else:
        return 0

Definieren Sie als Nächstes das Hinzufügen von Zeilen in der Matrix (da diese häufig verwendet wird).

def matcal(line1,line2):
    ans=[0]*(len(line1))
    for i in range(len(line1)):
        ans[i]+=cal(line1[i],line2[i])
    return ans

Alles was Sie tun müssen, ist das zu schreiben, das vereinfacht (aber nur bis zum oberen Dreieck)

def simple(mat):
    ans=copy.copy(mat)
    rank=0
    for i in range(len(mat[0])):
        for j in range(rank,len(mat)):
            if ans[j][i]==1:
                for k in range(rank,len(mat)):
                    if ans[k][i]==1 and k!=j:
                        ans[k]=matcal(ans[k],ans[j])
                if j==rank:
                    pass
                else:
                    ans[j],ans[rank]=ans[rank],ans[j]
                rank+=1
                if rank==len(mat)-1:
                    return ans
                break
            else:
                pass
    return ans

Um den Fluss grob zu erklären Tauschen Sie Zeilen aus, wenn Sie in der Spalte rankth nach Einsen suchen, und löschen (fügen Sie) Einsen in den Zeilen unter Ihnen hinzu. Es fühlt sich an wie zu wiederholen. Dies ist ausreichend, wenn Sie den Rang ohne eine saubere Vereinfachung wollen.

Bewegung

print(simple([[1,1,1],[1,1,0],[0,1,0]]))
>>>[[1, 1, 1], [0, 1, 0], [0, 0, 1]]

print(simple([[1,1,0],[1,1,0],[0,1,0]]))
>>>[[1, 1, 0], [0, 1, 0], [0, 0, 0]]

print(simple([[0,0,1],[0,1,0],[1,0,0]]))
>>>[[1, 0, 0], [0, 1, 0], [0, 0, 1]]

Es ist ein gutes Gefühl.

Gibt den Rang zurück

Sie können den Rang bestimmen, wenn Sie zur Vereinfachung mit der obigen gehen.

def rank(mat):
    l=len(mat[0])
    che=[0]*l
    cnt=0
    for i in range(len(mat)):
        if mat[i]!=che:
            cnt+=1
    return cnt

Schließlich

Ich möchte es mit $ Z / nZ $ anstelle von $ \ mathbb {F_2} $ tun können. Diesmal ist das umgekehrte Element von 1 jedoch 1, also hätte ich mich hinzufügen sollen, aber wenn es $ Z / nZ $ ist, kann es ein wenig schwierig sein, weil ich ein Programm vorbereiten muss, das nach dem umgekehrten Element sucht.

Recommended Posts

Finden Sie den Rang der Matrix in der XOR-Welt (Rang der Matrix auf F2)
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python
Finden Sie die Anzahl der Tage in einem Monat
[Python] Finden Sie die Translokationsmatrix in Einschlussnotation
Hinweis zum Standardverhalten von collate_fn in PyTorch
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Holen Sie sich die Anzahl der Leser von Artikeln über Mendeley in Python
Finden Sie den Schnittpunkt eines Kreises und einer geraden Linie (Sympymatrix)
Holen Sie sich den Aufrufer einer Funktion in Python
Kopieren Sie die Liste in Python
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Ausgabe in Form eines Python-Arrays
Sie wandeln spiralförmig in einer Welt, in der sich die Wände des Kreuzes erheben (Simulation)
[Beispiel für eine Python-Verbesserung] In 2 Wochen wurden die Grundlagen von Python auf einer kostenlosen Website erlernt
Finden Sie die Hermite-Matrix und ihre eindeutigen Werte in Python
Ermitteln Sie die maximale Anzahl von Zeichen in mehrzeiligem Text, die in einem Datenrahmen gespeichert sind
Unterschied in den Ergebnissen abhängig vom Argument von multiprocess.Process
Schreiben Sie in Python ein logarithmisches Histogramm auf die x-Achse
Ich habe Python verwendet, um mich über die Rollenauswahl der 51 "Yachten" in der Welt zu informieren.
Suchen Sie eine Richtlinie für die Anzahl der Prozesse / Threads, die auf dem Anwendungsserver festgelegt werden sollen
Eine Überlegung zur Visualisierung des Anwendungsbereichs des Vorhersagemodells
Ein Memorandum über die Umsetzung von Empfehlungen in Python
[Python] Programmieren, um die Nummer von a in einer Zeichenfolge zu finden, die eine bestimmte Anzahl von Malen wiederholt.
"Buch, um die Programmierfähigkeit zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel - 1,8 "0" -Matrix
So finden Sie die optimale Anzahl von Clustern für k-means
Maya | Ermitteln Sie die Anzahl der Polygone im ausgewählten Objekt
Umfrage zum Einsatz von maschinellem Lernen in realen Diensten
Zählen Sie die Anzahl der Zeichen im Text in der Zwischenablage auf dem Mac
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
Python - Ermitteln Sie die Anzahl der Gruppen im regulären Ausdruck
Suchen Sie den Index des Maximalwerts (Minimalwerts) eines mehrdimensionalen Arrays
So ermitteln Sie den Skalierungskoeffizienten eines bipolaren Wavelets
Finden Sie den Durchschnitt / die Standardabweichung der Helligkeitswerte im Bild
Ruft den Index jedes Elements der Verwirrungsmatrix in Python ab
Finde Fehler in Python
Python-Code Lösungsbeispiel --1.7 Matrixrotation
Ausbeute in einer Klasse, die unittest geerbt hat. TestCase funktionierte nicht mit der Nase (abhängig von der Version der Nase?)
Überprüfung der Scherzausbreitung der "Notfallerklärung am 1. April"
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
Untersuchen Sie den Lie-Trotter-Formel-Cutoff-Fehler
LU-Zerlegung in Python
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python
So bestimmen Sie die Existenz eines Selenelements in Python
Finden Sie den optimalen Wert der Funktion mit einem genetischen Algorithmus (Teil 2)
Erstellen Sie in kürzester Zeit eine Selenium-Umgebung unter Amazon Linux 2
Warum in der Substitutionsformel eine Scheibe auf die linke Seite setzen?
So überprüfen Sie die Speichergröße einer Variablen in Python
Unter Linux ist der Zeitstempel einer Datei etwas vorbei.
Finden Sie den Berührungspunkt der gemeinsamen Tangente zweier Kreise (Sympiematrix)
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
[Python] Ermittelt den Rang der Werte in der Liste in aufsteigender / absteigender Reihenfolge
So ermitteln Sie die Scheitelpunktkoordinaten eines Features in ArcPy
Ein Befehl zum einfachen Überprüfen der Netzwerkgeschwindigkeit auf der Konsole
Erstellen Sie eine Funktion, um den Inhalt der Datenbank in Go abzurufen
Ich möchte die Bevölkerung jedes Landes der Welt kennenlernen.
[Python] Eine einfache Funktion zum Ermitteln der Mittelkoordinaten eines Kreises
"Buch, um die Programmierfähigkeit zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --1.9 Drehung der Zeichenkette