Trovare una copertura minima di un sottoinsieme di un prodotto cartesiano finito con prodotti cartesiani


11

Dato un sottoinsieme di un prodotto cartesiano di due set finiti, desidero trovarne una copertura minima tramite set che sono essi stessi prodotti cartesiani.io×J

Ad esempio, dato un prodotto tra e , posso osservare il sottoinsieme e cerca di coprirlo con un numero minimo di prodotti cartesiani.J = { 1 , 2 , 3 } { ( A , 2 ) , ( B , 3 ) , ( B , 2 ) }io={UN,B,C}J={1,2,3}{(UN,2),(B,3),(B,2)}

Due modi per farlo sono e , entrambi richiedono 2 prodotti. Una soluzione non ottimale potrebbe essere la suddivisione in 3 prodotti banali.{UN}×{2}+B×{2,3}{UN,B}×{2}+{B}×{3}

È possibile trovare in modo efficiente una copertura così ottimale (ad es. In tempi polinomiali)?


mi ricorda questo problema, "factoring join cartesiano di bit vettori" (cstheory.SE, formulato in modo molto diverso) che ha connessioni con i limiti inferiori della teoria dei circuiti. quale contesto sorge il tuo problema?
vzn

Il mio contesto è la sicurezza della rete. In una grande rete con molti server, una politica di sicurezza definisce chi può parlare con quale. Se tale politica viene costruita in modo incrementale per un lungo periodo di tempo, (come di solito) la descrizione della politica di sicurezza può essere semplificata unendo le regole di sicurezza. Vorrei trovare una tale semplificazione ottimale.
yuvalm2,

È solo il numero di prodotti che vuoi minimizzare? In tal caso, cosa c'è di sbagliato nell'usare come copertina? Questo coprirà tutto nel tuo sottoinsieme (e alcuni altri). Hai un requisito secondo cui la soluzione non deve solo coprire il sottoinsieme, ma deve anche evitare di coprire qualcosa al di fuori del sottoinsieme? io×J
DW

1
Inoltre, poiché questo proviene da un'applicazione pratica (e quindi probabilmente stai cercando soluzioni pratiche), puoi dare un'idea delle dimensioni tipiche dei parametri? ad esempio, la dimensione tipica di,e il tuo sottoinsieme, entro un ordine di grandezza o giù di lì; o intervalli di valori tipici? Ciò potrebbe aiutare a valutare quali tecniche hanno maggiori probabilità di essere efficaci. Mi viene in mente la minimizzazione della logica , le mappe DNF e Karnaugh . |io||J|
DW

3
Forse un altro modo per formulare questo è il seguente: Dato un grafo bipartito trovare un certo numero minimo di cricche bipartito (o bi-cricche) che coprono . Ogni cricca corrisponde a un prodotto unico nel tuo spazio cartesiano. sol=(L,R,E)E
Nicholas Mancuso,

Risposte:


2

NM riformula questo problema nei commenti in quanto trova un numero minimo di cricche bipartite (bi-cricche) che coprono un grafico bipartito. i due insiemi che menzioni sono i 2 insiemi di vertici del grafico bipartito. i prodotti cartesiani dei sottoinsiemi dei due insiemi di vertici sono bicliques. wikipedia afferma che questo è il problema della dimensione bipartita ed è il problema GT18 in Garey e Johnson , dimostrato NP completo sulla base di una semplice riformulazione del problema SP7 basato su basi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.