Bei einem 2D-Array von booleschen Werten möchte ich alle Muster finden, die aus mindestens 2 Spalten und mindestens 2 Zeilen bestehen. Das Problem liegt nahe bei cliques in a graph.Wie finde ich Mustergruppen im booleschen Array?
Im Beispiel unten stellen grüne Zellen "echte" Bits dar, Graustufen sind "falsch". Muster 1 enthält Spalten 1, 3, 4 und 5 und Zeilen 1 und 2. Muster 2 enthält nur Spalten 2 und 4 und Zeilen 2, 3, 4.
Geschäftsidee dahinter findet Ähnlichkeit Muster unter den verschiedenen Gruppen von Nutzern sozialer Netzwerke. In der realen Welt kann die Anzahl der Zeilen bis zu 3E7 und die Anzahl der Spalten bis zu 300 reichen.
Kann nicht wirklich eine Lösung außer Brute-Force-Matching herausfinden.
Bitte geben Sie den richtigen Namen des Problems an, damit ich mehr lesen oder eine elegante Lösung empfehlen kann.
Wenn das Array symmetrisch ist und alle Diagonaleinträge true sind, müssen Sie symmetrische All-True-Sub-Arrays finden, die unter anderem den Cliquen in einem Diagramm entsprechen. Da das Bestimmen der größten Clique (oder der größten unabhängigen Menge im Komplement) NP-schwer ist, ist dieses Problem ebenfalls vorhanden. Das bedeutet nicht, dass es in der Praxis nicht möglich ist, aber es legt nahe, dass Sie mehr Informationen über die Besonderheiten der Arrays bereitstellen sollten, anstatt auf einen schnellen, allgemeinen Algorithmus zu hoffen. –
Was ist genau ein Muster? Es ist mir immer noch nicht klar. –
@DouglasZare, danke für den Kommentar. Array ist nicht symmetrisch. Zeile repräsentiert einen Benutzer, und die Bits sind für unabhängige Eigenschaften aktiviert, die von Forschung zu Forschung variieren. I.e. b1 "Hat eine höhere Bildung", b2 "Liked Seite X", b3: gemocht Seite Y "etc. JuanLopes von einem" Muster "meine ich Satz von" an "Spalten, mehr als 2, die für mehr als 2 Benutzer gelten – Serge