Ho cercato di trovare un algoritmo per trovare una copertura del ciclo massimo del vertice di un grafico diretto , ovvero un insieme di cicli disgiunti che contengano tutti i vertici in G , con il maggior numero possibile di cicli (non consideriamo cicli singoli vertici qui). So che il problema di trovare una copertura minima del ciclo del vertice, nonché di trovare una copertura del ciclo del vertice con esattamente k cicli è NP-completo. Ma per quanto riguarda il caso massimo?
Mentre troverei una risposta a questo interessante in generale, i grafici per cui voglio usarlo sono in realtà abbastanza limitati dalla loro costruzione, quindi forse anche se il problema è NP-completo potrebbe esserci una soluzione polinomiale per questi casi specifici.
Abbiamo un elenco di numeri interi , elementi l i e useremo S , elementi s i per fare riferimento a L dopo averli ordinati. Come esempio:
I vertici del grafico saranno identificati con coppie tali che l i = n e s i ≠ n . Il grafico ha un bordo diretto ( n , i ) → ( m , j ) se e solo se s j = n . (Un ciclo in questo grafico corrisponde a un insieme di valori che possono essere ciclicamente permutati in modo tale da finire nella loro posizione ordinata.)
L'esempio precedente produrrebbe il seguente grafico (utilizzando indici basati su 1):
Una cosa che non funziona è l'approccio avido di rimuovere ripetutamente il ciclo più piccolo (come mostra questo esempio).
Si noti che questo problema è (se non ho commesso errori) equivalente a chiedere quanti swap è necessario ordinare un determinato elenco. (Che è ciò che ha ispirato esaminando questo problema in primo luogo.)
.) Cioè, il peso dipende dalla dimensione del ciclo, non dai bordi particolari che include. Ma forse questo dà a qualcuno un'altra idea su come ridurre il problema.
Sembra anche che limitare la dimensione dei cicli renda il problema APX-difficile per i grafici generali. Ciò non implica necessariamente che lo stesso sia vero per il compito di massimizzare il numero di cicli, né per i grafici specifici considerati qui, ma sembra essere sufficientemente strettamente correlato da poter essere importante.
In sintesi: è possibile trovare una copertura del ciclo disgiunto vertice massimo per i grafici costruiti con il processo sopra descritto?
Come due parti, sarei anche interessato a sapere se la copertura del ciclo disgiunto vertice massimo ha anche una soluzione efficiente per i grafici arbitrari che ammettono almeno una copertura del ciclo (che probabilmente cadrà come risposta alla domanda principale), o se semplicemente determinare il numero di cicli nella copertura massima (al contrario dei bordi effettivi contenuti in ciascuno) rende il problema ancora più semplice. Sono felice di postarle come domande separate se le persone pensano di meritare risposte a pieno titolo da sole.