Ho grafici planari cubici (3-regolari) relativamente piccoli (40-80 nodi) e devo decidere la loro Hamiltonicità. Sono consapevole del fatto che questo compito è NP-completo, ma spero per gli algoritmi di tempo asintoticamente esponenziali che sono comunque molto veloce per le dimensioni del grafico Sono interessato aRicerca di cicli hamiltoniani nei grafici planari cubici
risposta
40 nodi sembra fattibile. Hai scelto 40 di 60 spigoli da includere.
Proviamo una ricerca in profondità.
Per iniziare, selezionare un vertice V. È necessario escludere esattamente uno dei suoi 3 bordi incidenti. Prova queste 3 possibilità una alla volta. Quando scegli uno spigolo da escludere, stai forzando l'inclusione di 4 spigoli. Dopodiché chiameremo i vertici del margine escluso "usato".
Se si potesse ripetere questa procedura 10 volte, avresti scelto tutti i 40 bordi, cercando solo 3^10 (59049) possibilità. Naturalmente, finirai con i vertici "isolati" dopo aver determinato un numero sufficiente di bordi.
Ma ora abbiamo un'idea per un algoritmo. Ad ogni passo, prova a scegliere un vertice con il minor numero di vicini "usati". In realtà, scegliere un vertice con 2 vicini usati è la cosa migliore, poiché il margine utilizzato è forzato. Non sono sicuro che scegliere un vertice con 1 o 0 vicini usati sia il migliore. Prova in entrambe le direzioni! (E 3 vicini usati indicano una ricerca fallita)
Quando abbiamo finito di raccogliere i bordi, controlla se formano un singolo ciclo.
Avete alcuni grafici di esempio? Potrei provare una semplice implementazione.
da http://mathworld.wolfram.com/HamiltonianCycle.html:. "Rubin (1974) descrive una procedura di ricerca efficiente che può trovare alcuni o tutti i percorsi e i circuiti di Hamilton in un grafico utilizzando deduzioni che riducono notevolmente il backtracking e le congetture ".
la carta è in vendita qui: http://portal.acm.org/citation.cfm?id=321850.321854
- 1. Aggiornamento avanzamento nei cicli Parallel.For()
- 2. Caratteri nei grafici R
- 3. Flusso massimo nei grafici dinamici
- 4. Inserzioni nei grafici in R
- 5. Interruzione di pagina (nuova pagina) nei grafici
- 6. L'uso di 1 == 1 o true nei cicli While
- 7. Incorporamento dei caratteri nei grafici ggplot2 nei documenti rmarkdown
- 8. Librerie di creazione di grafici per cellulari, la nostra ricerca
- 9. tracciare una curva uniforme nei grafici matplotlib
- 10. Nascondere il testo dell'asse nei grafici matplotlib
- 11. Connessione di punti NULL nei grafici di Highstock
- 12. Ricerca JS nei valori dell'oggetto
- 13. WordPress breadcrumb nei risultati di ricerca
- 14. Ricerca nei dizionari di sistema Mac OSX?
- 15. Aggiunta di una freccia sotto l'asse x nei grafici R
- 16. Come impostare i livelli di profondità fissi nei grafici DOT
- 17. Come limitare determinati percorsi nei grafici di NetworkX?
- 18. Impossibile modificare la dimensione/tipo di carattere nei grafici
- 19. Utilizzo con sns.set nei grafici di nidificazione del mare
- 20. SCons: cicli di dipendenza?
- 21. Scoppio di cicli nidificati
- 22. Misurazione delle distanze tra le classi nei grafici RDF/OWL
- 23. Imposta etichette personalizzate sull'asse x nei grafici a barre d3?
- 24. Come ottenere una filigrana immagine nei grafici HighCharts?
- 25. come applicare la programmazione in parallelismo nei problemi grafici?
- 26. Cambiare la dimensione dei caratteri nei grafici Matlab
- 27. Come suddividere il titolo in più righe nei grafici matlab
- 28. Ricerca non sensibile alle maiuscole nei graal
- 29. Comando Emacs per la ricerca nei file
- 30. Come simulare una ricerca di sottodominio nei test di Rails?