È necessario chiamare la moltiplicazione della matrice volte per trovare un artiglio


20

Un artiglio è un . Un banale algoritmo rileverà un artiglio nel tempo . Può essere fatto in , dove è l'esponente della moltiplicazione della matrice veloce, come segue: prendi il sottografo indotto da per ciascun vertice , e trova un triangolo in il suo complemento. O ( n 4 ) O ( n ω + 1 ) ω N [ v ] vK1,3O(n4)O(nω+1)ωN[v]v

Per quanto ne so, questi algoritmi di base sono noti solo. Spinrad ha elencato nel suo libro "rappresentazioni grafiche efficienti" il rilevamento di un artiglio nel tempo di come un problema aperto (8.3, pagina 103). Per il limite inferiore, sappiamo che un algoritmo di tempo implica un algoritmo di tempo per trovare un triangolo. Quindi possiamo considerare \ Omega (n ^ \ omega) come un limite inferiore.o(nω+1)O(nc)O(nmax(c,2))Ω(nω)

Domanda:

  1. C'è qualche progresso in questo. O qualche progresso nel mostrare che è impossibile?
  2. Ci sono altri problemi naturali con gli algoritmi O(nω+1) che sono i migliori?

Commento:

  1. Chiedo esplicitamente il rilevamento di un artiglio, anziché il riconoscimento di grafici privi di artigli. Sebbene un algoritmo di solito risolva entrambi, ci sono poche eccezioni.
  2. È affermato nel Manuale di algoritmi e informatica teorica che può essere trovato in tempo lineare, ma era solo un errore di battitura (vedi "rappresentazioni grafiche efficienti").

Puoi usare il metodo di Alon et al. Per trovare il triangolo in O(|E|1.41) , per ogni nodo che finisce in una O(|V||E|1.41) che è meglio di |V|ω+1 se il grafico non è troppo denso.
RB

@RB, grazie per averlo sottolineato. L'idea di base è ancora di eseguire l'algoritmo di rilevamento triangolo qualunque n volte, che è ciò che voglio evitare.
Yixin Cao,

Come possiamo aspettarci di trovare un algoritmo che non è correlato alla ricerca del triangolo? Perché qualunque sia l'algoritmo dovrebbe controllare i vicini di ciascun vertice. Voglio dire che la proprietà è proprietà molto locale, tranne che con una differenza di fattore costante dovrebbe essere visto ogni vertice. (O non riesco a immaginare alcun algoritmo naturale che eviti questa località). Hai qualche idea anche vaga?
Saeed,

2
Forse è bene ricordare che se riusciamo a trovare un artiglio in f (n) tempo, possiamo anche trovare un triangolo in f (n + 1) tempo (basta prendere il complemento del grafico e aggiungere un altro vertice connesso a tutti ), quindi non dovremmo sperare di trovare qualcosa di meglio di . nω
domotorp,

1
@domotorp, sembra che una parte sia chiara, viceversa non è chiara, intendo perché abbiamo bisogno di una ricerca lineare. Come ha anche sottolineato Yixin, potrebbe esserci un altro algoritmo che non utilizza un algoritmo di ricerca del triangolo e risolve il problema in , che penso sia difficile trovare un tale algoritmo e probabilmente è più facile per mostrare che qualsiasi algoritmo utilizza la ricerca triangolare come subroutine (o può essere convertita) con una ricerca lineare su di essa. o(nω+1)
Saeed,

Risposte:


16

Penso che possiamo fare un po 'meglio di per i grafici densi, usando la moltiplicazione della matrice rettangolare. Un'idea simile è stata usata da Eisenbrand e Grandoni ("Sulla complessità della cricca a parametri fissi e insieme dominante", Theoretical Computer Science Volume 326 (2004) 57–67) per il rilevamento di 4 cricche.O(n1+ω)

Sia il grafico in cui vogliamo rilevare l'esistenza di un artiglio. Lasciate l'insieme di coppie (ordinate) di vertici in . Considera la seguente matrice booleana di dimensione: ogni riga è indicizzata da alcuni , ogni colonna è indicizzata da alcuni e la voce corrispondente è una se e solo se , e . Prendere in considerazione il prodotto matrice booleana di e la sua trasposizione . Il grafico ha un artiglio se e solo se esisteG=(V,E)AVM|V|×|A|uV(v,w)A{u,v}E{v,w}E{u,w}EMMTG{u,v}E tale che l'ingresso di nella riga indicizzata da e la colonna indicizzata da è uno.MMTuv

La complessità di questo algoritmo è essenzialmente la complessità del calcolo del prodotto booleano di una matrice con una matrice , dove indica il numero di vertici nel grafico. È noto che un tale prodotto matrice può essere calcolato nel tempo , che è migliore di per il limite superiore più noto su . Naturalmente, se (come congetturato), i due approcci danno la stessa complessità .n×n2n2×nnO(n3.3)O(n1+ω)ωω=2O(n3)


Grande! Questo è esattamente quello che voglio per la mia prima domanda: solo una chiamata alla moltiplicazione di matrici, sebbene più grande. Aspetterò altri commenti o risposte sulla mia seconda domanda prima di prenderlo come risposta.
Yixin Cao,

15

Non so come evitare di fare moltiplica matrice, ma è possibile analizzare in modo tale che il tempo di un modo efficace è quello di un numero minore di loro. Questo trucco è din

Kloks, Ton; Kratsch, Dieter; Müller, Haiko (2000), "Trovare e contare in modo efficiente piccoli sottogravi indotti", Lettere di elaborazione delle informazioni 74 (3-4): 115-121, doi: 10.1016 / S0020-0190 (00) 00047-8, MR 1761552.

La prima osservazione è che, quando stai andando, la matrice si moltiplica, le matrici non sono realmente , ma dove è il grado di ciascun vertice, perché quello che stai cercando è un co-triangolo nelle vicinanze di ciascun vertice.n×nd×dd

In secondo luogo, in un grafico privo di artigli, ogni vertice deve avere vicini . Perché, altrimenti, l'insieme dei vicini avrebbe troppo pochi spigoli per evitare di avere un triangolo nel complemento. Quindi, quando si eseguono moltiplicazioni di matrici, è necessario farlo solo su matrici di dimensione anziché .O(m)O(m)n

Inoltre, ogni fronte può contribuire alla dimensione del problema di moltiplicazione della matrice solo per due vertici, i suoi punti finali. Il caso peggiore si verifica quando i per la dimensione totale di questi problemi di moltiplicazione di matrice sono distribuiti in sottoproblemi di dimensione ciascuno, che fornisce un limite di tempo totale di , un miglioramento per i grafici sparsi associato da R B.2mO(m)O(m)O(m(1+ω)/2)O(nmω/2)


Wow, questa è un'idea intelligente, stavo pensando se è possibile fare una ricerca sublineare (in realtà smentendo questo) e non ho nemmeno pensato alle proprietà intrinseche del problema.
Saeed,

Grazie David. La lascio aperta per un momento poiché la mia seconda domanda sembra non essere ancora notata.
Yixin Cao,
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.