Il conteggio dei triangoli nei grafici generali può essere fatto in modo banale in tempo e penso che fare molto più velocemente sia difficile (riferimenti ben accetti). Che dire dei grafici planari? La seguente procedura semplice mostra che può essere fatto in tempo. La mia domanda è duplice:
- Qual è un riferimento per questa procedura?
- Il tempo può essere reso lineare?
Dalla dimostrazione algoritmica del teorema del separatore planare di Lipton-Tarjan possiamo, nel tempo lineare nella dimensione del grafico, trovare una divisione dei vertici del grafico in tre insiemi tale che non ci siano bordi con un endpoint in e l'altro in B , S ha dimensioni delimitate da O ( √ed entrambiA,Bhanno dimensioni superiori delimitate da 2 del numero di vertici. Si noti che qualsiasi triangolo nel grafico sia situata interamente all'internoAo interamente all'interno diBo di utilizzi almeno un vertice diScon gli altri due vertici daA∪So entrambi daB∪S. Quindi è sufficiente contare il numero di triangoli nel grafico suSe i vicini diSinA(e similmente perB). Si noti cheSe i suoiA-neighbours inducono ungrafico planarek-outer (detto grafico è un sottografo di un grafico planare di diametro4). Quindi contare il numero di triangoli in un tale grafico può essere fatto direttamente mediante la programmazione dinamica o un'applicazione del teorema di Courcelle (so con certezza che una tale versione di conteggio esiste nel mondo Logspace di Elberfeld et al. E suppongo che esista anche nel mondo del tempo lineare) poiché la formazione di un triangolo non orientato è una proprietà e poiché una decomposizione dell'albero a larghezza limitata è facile da ottenere da un grafico planare k -outer incorporato .
Così abbiamo ridotto il problema a una coppia di problemi che sono ciascuno una frazione costante più piccola a scapito di una procedura temporale lineare.
Si noti che la procedura può essere estesa per trovare il conteggio del numero di istanze di qualsiasi grafico collegato fisso all'interno di un grafico di input nel tempo .