Compte tenu d' une famille ensemble de sous - ensembles d'un univers . Soit et nous voulons répondre est .
Je recherche une structure de données qui me permettra d'y répondre rapidement. Mon application est de la théorie des graphes où je veux voir si la suppression d'un sommet et de son voisinage laisse des sommets isolés, et pour chaque sommet liste tous les sommets isolés qu'il laisse.
Je veux créer le poset complet ou éventuellement un tableaux stockant de vrais faux indiquant exactement quels ensembles sont des sous-ensembles les uns des autres.
Soit , et , supposons
Nous pouvons générer la matrice de confinement (le graphique bipartite) en temps puis créer le tableau de toutes les comparaisons en temps par pour chaque ensemble , parcourir tous les éléments de tous les autres ensembles et marquer le jeu en tant que pas un sous - ensemble de si l'élément se trouve pas dans . Temps total .
Pouvons-nous faire quelque chose plus rapidement? En particulier, le temps -il possible ou non?
J'ai trouvé quelques articles liés:
Un algorithme sub-quadratique simple pour calculer l'ordre partiel de sous-ensemble (1995) qui donne un algorithme .
L'ordre partiel du sous-ensemble: informatique et combinatoire améliore légèrement ce qui précède, mais affirme également que l'article ci-dessus résout le problème en temps où est le nombre maximal d'ensembles partageant un élément commun, mais je ne pouvais pas comprendre ce résultat.
Dans l'article Entre et O ( n α ), les auteurs montrent comment dans un graphique trouver les composants connectés après avoir supprimé le voisinage fermé d'un sommet en utilisant la multiplication matricielle. Ceci peut être utilisé pour calculer le poset d'inclusion défini en trouvant tous les composants qui sont des singletons avec un temps d'exécution de .
Cette discussion sur le forum est également liée: Quel est le moyen le plus rapide de vérifier l'inclusion d'un ensemble? ce qui implique une borne inférieure de .
la source
Réponses:
Si le caractère aléatoire est dans les limites, une idée approximative serait de générer un tas de fonctions de "signature monotone aléatoire" et de les utiliser pour approximer la relation de sous-ensemble (à la filtre de Bloom). Malheureusement, je ne sais pas comment en faire un algorithme pratique, mais voici quelques estimations qui ne prouvent pas immédiatement que l'idée est impossible. C'est très loin d'une solution utile, mais je l'écrirai au cas où cela aiderait.
Supposons pour plus de simplicité que les ensembles sont presque tous de la même taille, par exemple , et que s = o ( u ) . Nous pouvons supposer 1 ≪ s , sinon nous avons terminé. Définir q|S|=s±O(1) s=o(u) 1≪s
Notez quep≫1.
Voici la partie extrêmement impraticable. Choisir aléatoirement sous-ensembles A 1 , … , A p ⊂ U avec remplacement, chacun de taille q , et définir une fonctionp A1,…,Ap⊂U q par f ( S ) = 1 ssi A i ⊂ S pour certains i . Avec S fixe et A i , f variant aléatoirement, nous avons
Prf:2U→{0,1} f(S)=1 Ai⊂S i S Ai,f
Puisquef(S)est monotone,S⊂Timpliquef(S)≤f(
Même si les calculs ci-dessus sont corrects, je ne sais pas comment générer rapidement des fonctions de signature monotone avec les fonctionnalités souhaitées. Il est également probable que cette technique ne s'étende pas à des tailles de jeu sensiblement différentes.
la source