À quelle vitesse pouvons-nous calculer le poset d'inclusion d'ensemble d'une famille d'ensemble?


20

Compte tenu d' une famille ensemble F de sous - ensembles d'un univers U . Soit S1,S2F et nous voulons répondre est S1S2 .

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 |F|2 tableaux stockant de vrais faux indiquant exactement quels ensembles sont des sous-ensembles les uns des autres.

Soit m=SF|S|, u=|U|et n=|F|, supposons u,nm

Nous pouvons générer la matrice de confinement n×u (le graphique bipartite) en temps O(un) puis créer le tableau de toutes les n2 comparaisons en temps O(nm) par pour chaque ensemble SF , parcourir tous les éléments de tous les autres ensembles et marquer le jeu en tant que pas un sous - ensemble de S si l'élément se trouve pas dans S . Temps total O(nm) .

Pouvons-nous faire quelque chose plus rapidement? En particulier, le temps O((n+u)2) -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 O(m2/log(m)) .

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(m) 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 α ),O(nm)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 .O((n+u)2,79)

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 .O(n2ϵ)


Juste une suggestion: pourriez-vous simplifier la question en définissant ? Ou les deux paramètres sont-ils importants dans votre application? u=n
Colin McQuillan

Dans ma demande , j'ai < < moyens asymptotiquement plus petit. u<<n<<2u<<
Martin Vatshelle

Réponses:


2

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)1s Notez quep1.

q=[s/2]p=[(uq)(sq)]
p1

Voici la partie extrêmement impraticable. Choisir aléatoirement sous-ensembles A 1 , , A pU avec remplacement, chacun de taille q , et définir une fonctionpA1,,ApUq par f ( S ) = 1 ssi A iS pour certains i . Avec S fixe et A i , f variant aléatoirement, nous avons Prf:2U{0,1}f(S)=1AiSiSAi,f Puisquef(S)est monotone,STimpliquef(S)f(

Pr(f(S)=0)=Pr(i.AiS)=Pr(A1S)p=(1(sq)/(uq))p=eΘ(1)
F(S)ST . Si T S , fixercertain t T - S . La probabilité que f détecte T S est Pr ( f ( S ) = 0 < 1 = fF(S)F(T)TStT-SFTS Certaines de ces étapes sont assez ténues, mais je n'ai pas le temps de les améliorer ce soir. Dans tous les cas, s'ils le sont tous, alors au moins il n'est pas clairement impossible de générer de manière aléatoire des fonctions de signature qui ont une probabilité raisonnable de distinguer les sous-ensembles des non-sous-ensembles. Un nombre logarithmique de ces fonctions distinguerait alors correctement toutes les paires. Si la génération d'une fonction de signaturefet le calcul def(S)pouvaient être réduits à un temps ˜ O (n+u), le résultat serait un ˜ O global(n2
Pr(f(S)=0<1=f(T))=Pr(f(S)=0)Pr(f(T)=1|f(S)=0)=eΘ(1)Pr(i.AiT,AiTS0|f(S)=0)=eΘ(1)Pr(i.tAiT|f(S)=0)eΘ(1)Pr(i.tAiT)eΘ(1)pPr(tA1T)eΘ(1)p(sq1)/(uq)eΘ(1)pqsq(sq)/(uq)=eΘ(1)
ff(S)O~(n+u) algorithme.O~(n2+u2)

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.