Construire des matrices binaires non équivalentes

15

J'essaie de construire toutes les matrices inéquivalentes (ou n × n si vous le souhaitez) avec les éléments 0 ou 1. L'opération qui donne des matrices équivalentes est l'échange simultané de la ligne i et j ET de la colonne i et j. par exemple. pour 1 2 ( 0 0 0 0 1 1 1 0 0 )( 1 0 1 0 0 0 0 1 08×8n×n12

(000011100)(101000010)

Finalement, je devrai également compter le nombre de matrices équivalentes dans chaque classe, mais je pense que le théorème de comptage de Polya peut le faire. Pour l'instant, j'ai juste besoin d'une manière algoritmique de construire une matrice dans chaque classe d'inégivalence. Des idées?

Hétérotique
la source
2
Il y a au moins d'entre eux. C'est un très grand nombre. 264/8!248
Yuval Filmus
@Yuval: Ce sont en effet de grands nombres et pour mon calcul cela fait vraiment une différence si c'est ou 2 52 . Cela pourrait prendre des semaines de plus! C'est la raison pour laquelle j'essaie d'utiliser toutes les symétries du problème en question. Soit dit en passant, ce problème provient de la construction de modèles dans la théorie des cordes! :)248252
Heterotic
Que comptez-vous faire avec toutes ces matrices? Où allez-vous les stocker? Quelle est l'application?
Yuval Filmus
1
idée: n'est-ce pas très similaire au problème d'isomorphisme graphique? où les matrices sont des matrices de bord de graphe? sauf que ceux-ci sont symétriques ... peut-être peut-être exploité d'une manière ou d'une autre, il y a des tonnes de théorie à ce sujet ...
vzn

Réponses:

1

J'ai fait quelques progrès pour répondre à cette question. Je poste ici au cas où quelqu'un d'autre serait intéressé et aussi parce que cette construction pourrait avoir une certaine utilité pour les graphiques (dirigés).

une0une1une8uneje=8

(une1,,une8;T,S)
100je=18uneje=8-une0

D'après mes essais et erreurs, il semble que si deux matrices sont différentes dans cette paramétrisation, alors elles appartiennent à des classes d'équivalence différentes, donc pour construire un représentant dans chaque classe, nous parcourons simplement l'espace des paramètres comme décrit ci-dessus.

(Mise à jour) Il s'avère que cette paramétrisation fonctionne bien pour n = 2 mais pas pour n = 3 comme on peut le voir par un calcul de force brute. Je pense toujours que cela donne un aperçu de la structure de la réponse et j'invite les gens à essayer de la modifier / l'étendre pour couvrir le cas le plus général.

Hétérotique
la source
2
1×12×2sept×sept
@DW: En effet, c'est la preuve que cette condition est suffisante qui me trouble et celle avec laquelle je voudrais de l'aide. Je vais essayer de le vérifier de manière exhaustive pour les petits cas et voir ce qui se passe. Merci pour le conseil! Malheureusement, je ne sais pas comment utiliser un solveur SAT pour rechercher des contre-exemples. Si la conjecture est valable pour les petites matrices, je pourrais commencer à l'apprendre ...
Heterotic
C'est logique, hétérotique! En fait, je reprends ma déclaration sur l'utilisation d'un solveur SAT. Je ne sais pas non plus comment utiliser un solveur SAT pour rechercher des contre-exemples (c'est plus difficile que je ne le pensais au début) - veuillez donc ignorer cette partie de mon commentaire. Désolé pour ça!
DW
2
uneje(1,4)(2,3)(1,4)(2,4)(toutes les entrées restantes 0 pour les deux) ne sont pas équivalentes mais ont le même paramétrage. (Bien sûr, cela conduit immédiatement à une paramétrisation améliorée qui prend également en compte les colonnes.)
FrankW
1
Hétérotique, maintenant que vous savez que votre réponse ne fonctionne pas, je suggère de supprimer votre réponse pour ne pas dérouter les autres ...
DW