[PYTHON] Trouvez le rang de la matrice dans le monde XOR (rang de la matrice sur F2)

En premier

Je suis un étudiant universitaire de la Faculté d'agriculture qui étudie les mathématiques comme passe-temps. J'ai encore beaucoup de compétences en mathématiques et en programmation, donc je serais heureux si vous pouviez m'apprendre> <

Qu'est-ce que XOR

Veuillez consulter un autre site pour plus de détails. Quand tu parles 1+1=0 1+0=1 0+1=1 0+0=0 Si vous le considérez comme un monde dans lequel les opérations sont définies (en termes algébriques, c'est la somme sur $ \ mathbb {F_2} $.)

Qu'est-ce que la simplification?

C'est un travail à transformer en une forme pratique tout en conservant le rang de la matrice. Il est souvent agréable de connaître le rang (divers) De plus, si elle existe en cours de simplification, la matrice inverse peut être obtenue, la simplification est donc assez importante.

programme

Tout d'abord, déterminez le calcul

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

Ensuite, définissez l'ajout de lignes dans la matrice (car il est souvent utilisé).

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

Tout ce que vous avez à faire est d'écrire celui qui simplifie (mais seulement jusqu'au triangle supérieur)

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

Pour expliquer le flux grossièrement Permutez les lignes si vous recherchez des 1 dans la colonne de rang. Et supprimez (ajoutez) des 1 dans les lignes en dessous de vous. C'est comme répéter. Cela suffit si vous voulez le rang sans une simplification nette.

mouvement

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]]

C'est un sentiment agréable.

Renvoie le rang

Vous pouvez dire le rang si vous passez à la simplification avec celle ci-dessus.

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

finalement

Je veux pouvoir le faire avec $ Z / nZ $ au lieu de $ \ mathbb {F_2} $. Cependant, cette fois, l'élément inverse de 1 est 1, donc j'aurais dû me rajouter moi-même, mais si c'est $ Z / nZ $, cela peut être un peu difficile car je dois préparer un programme qui recherche l'élément inverse.

Recommended Posts

Trouvez le rang de la matrice dans le monde XOR (rang de la matrice sur F2)
Trouver les valeurs propres d'une vraie matrice symétrique en Python
Trouvez le nombre de jours dans un mois
[Python] Trouvez la matrice de translocation en notation d'inclusion
Remarque sur le comportement par défaut de collate_fn dans PyTorch
Découvrez la largeur apparente d'une chaîne en python
Obtenez le nombre de lecteurs d'articles sur Mendeley en Python
Trouver l'intersection d'un cercle et d'une droite (matrice sympy)
Récupérer l'appelant d'une fonction en Python
Copiez la liste en Python
Découvrez la fraction de la valeur saisie en python
Trouvez la solution de l'équation d'ordre n avec python
Sortie sous la forme d'un tableau python
Vous marchez en spirale dans un monde où les murs de la croix s'élèvent (simulation)
[Exemple d'amélioration de Python] Apprentissage des bases de Python sur un site gratuit en 2 semaines
Trouvez la matrice Hermite et ses valeurs uniques en Python
Découvrez le nombre maximum de caractères dans un texte multiligne stocké dans un bloc de données
Différence de résultats en fonction de l'argument du multiprocessus.
Ecrire un histogramme à l'échelle logarithmique sur l'axe des x en python
J'ai utilisé Python pour découvrir les choix de rôle des 51 "Yachts" dans le monde.
Trouvez une ligne directrice pour le nombre de processus / threads à définir sur le serveur d'applications
Une réflexion sur la visualisation du champ d'application du modèle de prédiction
Un mémorandum sur la mise en œuvre des recommandations en Python
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de réponse au code Python - Matrice de 1,8 "0"
Comment trouver le nombre optimal de clusters pour les k-moyennes
Maya | Découvrez le nombre de polygones dans l'objet sélectionné
Enquête sur l'utilisation du machine learning dans les services réels
Comptez le nombre de caractères dans le texte dans le presse-papiers sur Mac
Obtenez le nombre d'éléments spécifiques dans la liste python
Python --Trouvez le nombre de groupes dans l'expression regex
Trouver l'index de la valeur maximale (valeur minimale) d'un tableau multidimensionnel
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Trouvez l'écart moyen / standard des valeurs de luminosité dans l'image
Obtenez l'index de chaque élément de la matrice de confusion en Python
Trouver des erreurs en Python
"Livre pour former des compétences en programmation pour combattre dans le monde" Exemple de solution de code Python - 1.7 Rotation de matrice
Rendement dans la classe qui a hérité de l'unittest.TestCase ne fonctionnait pas avec le nez (selon la version du nez?)
Vérification de la propagation du canular de "Déclaration d'urgence le 1er avril"
Traitez le contenu du fichier dans l'ordre avec un script shell
Examiner l'erreur de coupure de la formule de Lie-Trotter
Décomposition LU en Python
Trouver les valeurs propres d'une vraie matrice symétrique en Python
Comment déterminer l'existence d'un élément sélénium en Python
Trouvez la valeur optimale de la fonction à l'aide d'un algorithme génétique (partie 2)
Créez un environnement Selenium sur Amazon Linux 2 dans les plus brefs délais
Pourquoi mettre une tranche sur le côté gauche dans la formule de substitution
Comment vérifier la taille de la mémoire d'une variable en Python
Sous Linux, l'horodatage d'un fichier est un peu dépassé.
Trouver le point de contact de la tangente commune de deux cercles (matrice sympy)
Lire la sortie standard d'un sous-processus ligne par ligne en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
[python] Obtenez le rang des valeurs dans la liste par ordre croissant / décroissant
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
Une commande pour vérifier facilement la vitesse du réseau sur la console
Créez une fonction pour obtenir le contenu de la base de données dans Go
Je veux connaître la population de chaque pays du monde.
[Python] Une fonction simple pour trouver les coordonnées du centre d'un cercle
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de réponse de code Python --1.9 Rotation de la chaîne de caractères